├── .eslintignore
├── .eslintrc.cjs
├── .github
└── FUNDING.yml
├── .gitignore
├── .npmrc
├── .prettierignore
├── .prettierrc
├── LICENSE.md
├── README.md
├── dist
├── bin.d.ts
├── bin.js
├── cli
│ ├── helpers
│ │ ├── common.d.ts
│ │ └── common.js
│ └── init
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── stubs
│ │ ├── postcss.config.cjs
│ │ ├── postcss.config.d.cts
│ │ ├── tailwind.config.d.ts
│ │ └── tailwind.config.js
├── components
│ ├── accordion.d.ts
│ ├── accordion.js
│ ├── alert.d.ts
│ ├── alert.js
│ ├── animation.d.ts
│ ├── animation.js
│ ├── avatar.d.ts
│ ├── avatar.js
│ ├── badge.d.ts
│ ├── badge.js
│ ├── breadcrumb.d.ts
│ ├── breadcrumb.js
│ ├── button.d.ts
│ ├── button.js
│ ├── card.d.ts
│ ├── card.js
│ ├── chart.d.ts
│ ├── chart.js
│ ├── cmd.d.ts
│ ├── cmd.js
│ ├── comment.d.ts
│ ├── comment.js
│ ├── container.d.ts
│ ├── container.js
│ ├── cover.d.ts
│ ├── cover.js
│ ├── date.d.ts
│ ├── date.js
│ ├── divider.d.ts
│ ├── divider.js
│ ├── dotnav.d.ts
│ ├── dotnav.js
│ ├── drop.d.ts
│ ├── drop.js
│ ├── form
│ │ ├── basic.d.ts
│ │ ├── basic.js
│ │ ├── custom-select.d.ts
│ │ ├── custom-select.js
│ │ ├── keyval.d.ts
│ │ ├── keyval.js
│ │ ├── pin.d.ts
│ │ ├── pin.js
│ │ ├── range.d.ts
│ │ ├── range.js
│ │ ├── rte.d.ts
│ │ ├── rte.js
│ │ ├── tag.d.ts
│ │ └── tag.js
│ ├── icon.d.ts
│ ├── icon.js
│ ├── index.d.ts
│ ├── index.js
│ ├── label.d.ts
│ ├── label.js
│ ├── leader.d.ts
│ ├── leader.js
│ ├── lightbox.d.ts
│ ├── lightbox.js
│ ├── link.d.ts
│ ├── link.js
│ ├── list.d.ts
│ ├── list.js
│ ├── media.d.ts
│ ├── media.js
│ ├── modal.d.ts
│ ├── modal.js
│ ├── nav.d.ts
│ ├── nav.js
│ ├── notification.d.ts
│ ├── notification.js
│ ├── offcanvas.d.ts
│ ├── offcanvas.js
│ ├── pagination.d.ts
│ ├── pagination.js
│ ├── placeholder.d.ts
│ ├── placeholder.js
│ ├── position.d.ts
│ ├── position.js
│ ├── preflight.d.ts
│ ├── preflight.js
│ ├── print.d.ts
│ ├── print.js
│ ├── progress.d.ts
│ ├── progress.js
│ ├── root.d.ts
│ ├── root.js
│ ├── slider.d.ts
│ ├── slider.js
│ ├── sortable.d.ts
│ ├── sortable.js
│ ├── spinner.d.ts
│ ├── spinner.js
│ ├── stepper.d.ts
│ ├── stepper.js
│ ├── sticky.d.ts
│ ├── sticky.js
│ ├── svg.d.ts
│ ├── svg.js
│ ├── switcher.d.ts
│ ├── switcher.js
│ ├── tab.d.ts
│ ├── tab.js
│ ├── table.d.ts
│ ├── table.js
│ ├── tag.d.ts
│ ├── tag.js
│ ├── theme-switcher.d.ts
│ ├── theme-switcher.js
│ ├── thumbnav.d.ts
│ ├── thumbnav.js
│ ├── tooltip.d.ts
│ ├── tooltip.js
│ ├── transition.d.ts
│ ├── transition.js
│ ├── typography.d.ts
│ ├── typography.js
│ ├── utility.d.ts
│ └── utility.js
├── context.d.ts
├── context.js
├── css
│ ├── core.min.css
│ ├── franken-ui.css
│ └── utilities.min.css
├── index.d.ts
├── index.js
├── js
│ ├── chart.iife.js
│ ├── core.iife.js
│ ├── icon.iife.js
│ └── rte.iife.js
├── merger.d.ts
├── merger.js
├── palette.d.ts
├── palette.js
├── plugin-vite.d.ts
├── plugin-vite.js
├── postcss
│ ├── combine-duplicated-selectors.cjs
│ ├── combine-duplicated-selectors.d.cts
│ ├── sort-media-queries.cjs
│ └── sort-media-queries.d.cts
├── rules.d.ts
├── rules.js
├── shadcn-ui
│ ├── preset-quick.d.ts
│ └── preset-quick.js
├── types.d.ts
└── types.js
├── package-lock.json
├── package.json
├── postcss.config.cjs
├── src
├── app.d.ts
├── app.html
├── css
│ └── app.css
├── franken
│ ├── test-item.svelte
│ └── test.svelte
├── lib
│ ├── bin.ts
│ ├── cli
│ │ ├── helpers
│ │ │ └── common.ts
│ │ └── init
│ │ │ ├── index.ts
│ │ │ └── stubs
│ │ │ ├── postcss.config.cjs
│ │ │ └── tailwind.config.js
│ ├── components
│ │ ├── accordion.ts
│ │ ├── alert.ts
│ │ ├── animation.ts
│ │ ├── avatar.ts
│ │ ├── badge.ts
│ │ ├── breadcrumb.ts
│ │ ├── button.ts
│ │ ├── card.ts
│ │ ├── chart.ts
│ │ ├── cmd.ts
│ │ ├── comment.ts
│ │ ├── container.ts
│ │ ├── cover.ts
│ │ ├── date.ts
│ │ ├── divider.ts
│ │ ├── dotnav.ts
│ │ ├── drop.ts
│ │ ├── form
│ │ │ ├── basic.ts
│ │ │ ├── custom-select.ts
│ │ │ ├── keyval.ts
│ │ │ ├── pin.ts
│ │ │ ├── range.ts
│ │ │ ├── rte.ts
│ │ │ └── tag.ts
│ │ ├── icon.ts
│ │ ├── index.ts
│ │ ├── label.ts
│ │ ├── leader.ts
│ │ ├── lightbox.ts
│ │ ├── link.ts
│ │ ├── list.ts
│ │ ├── media.ts
│ │ ├── modal.ts
│ │ ├── nav.ts
│ │ ├── notification.ts
│ │ ├── offcanvas.ts
│ │ ├── pagination.ts
│ │ ├── placeholder.ts
│ │ ├── position.ts
│ │ ├── preflight.ts
│ │ ├── print.ts
│ │ ├── progress.ts
│ │ ├── root.ts
│ │ ├── slider.ts
│ │ ├── sortable.ts
│ │ ├── spinner.ts
│ │ ├── stepper.ts
│ │ ├── sticky.ts
│ │ ├── svg.ts
│ │ ├── switcher.ts
│ │ ├── tab.ts
│ │ ├── table.ts
│ │ ├── tag.ts
│ │ ├── theme-switcher.ts
│ │ ├── thumbnav.ts
│ │ ├── tooltip.ts
│ │ ├── transition.ts
│ │ ├── typography.ts
│ │ └── utility.ts
│ ├── context.ts
│ ├── index.ts
│ ├── merger.ts
│ ├── palette.ts
│ ├── plugin-vite.ts
│ ├── postcss
│ │ ├── combine-duplicated-selectors.cjs
│ │ └── sort-media-queries.cjs
│ ├── rules.ts
│ ├── shadcn-ui
│ │ └── preset-quick.ts
│ └── types.ts
└── routes
│ ├── +layout.js
│ └── +page.svelte
├── static
├── favicon.png
├── fonts
│ └── Geist
│ │ ├── Mono.woff2
│ │ ├── Sans.woff2
│ │ └── style.css
└── images
│ ├── avatar.jpg
│ ├── dark.jpg
│ ├── icons.svg
│ ├── image-type.avif
│ ├── image-type.jpeg
│ ├── image-type.webp
│ ├── light.jpg
│ ├── photo.jpg
│ ├── photo2.jpg
│ ├── photo3.jpg
│ ├── size-h.jpg
│ ├── size-v.jpg
│ ├── size1.jpg
│ ├── size2.jpg
│ ├── slider1.jpg
│ ├── slider2.jpg
│ ├── slider3.jpg
│ ├── slider4.jpg
│ └── slider5.jpg
├── svelte.config.js
├── tailwind.config.js
├── tsconfig.json
└── vite.config.ts
/.eslintignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /build
4 | /.svelte-kit
5 | /package
6 | .env
7 | .env.*
8 | !.env.example
9 |
10 | # Ignore files for PNPM, NPM and YARN
11 | pnpm-lock.yaml
12 | package-lock.json
13 | yarn.lock
14 |
--------------------------------------------------------------------------------
/.eslintrc.cjs:
--------------------------------------------------------------------------------
1 | /** @type { import("eslint").Linter.Config } */
2 | module.exports = {
3 | root: true,
4 | extends: [
5 | 'eslint:recommended',
6 | 'plugin:@typescript-eslint/recommended',
7 | 'plugin:svelte/recommended',
8 | 'prettier'
9 | ],
10 | parser: '@typescript-eslint/parser',
11 | plugins: ['@typescript-eslint'],
12 | parserOptions: {
13 | sourceType: 'module',
14 | ecmaVersion: 2020,
15 | extraFileExtensions: ['.svelte']
16 | },
17 | env: {
18 | browser: true,
19 | es2017: true,
20 | node: true
21 | },
22 | overrides: [
23 | {
24 | files: ['*.svelte'],
25 | parser: 'svelte-eslint-parser',
26 | parserOptions: {
27 | parser: '@typescript-eslint/parser'
28 | }
29 | }
30 | ]
31 | };
32 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: [sveltecult]
2 | ko_fi: sveltecult
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | /build
4 | /.svelte-kit
5 | /package
6 | .env
7 | .env.*
8 | !.env.example
9 | vite.config.js.timestamp-*
10 | vite.config.ts.timestamp-*
11 | /src/lib/css/franken-ui.css
12 |
13 | # shell scripts
14 | *.sh
--------------------------------------------------------------------------------
/.npmrc:
--------------------------------------------------------------------------------
1 | engine-strict=true
2 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | # Ignore files for PNPM, NPM and YARN
2 | pnpm-lock.yaml
3 | package-lock.json
4 | yarn.lock
5 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "useTabs": true,
3 | "singleQuote": true,
4 | "trailingComma": "none",
5 | "printWidth": 100,
6 | "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
7 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }]
8 | }
9 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2024 [Franken UI contributors](https://github.com/franken-ui/ui/graphs/contributors)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Franken UI
2 |
3 | Franken UI is an open-source library of UI components. Under the hood, it uses UIkit 3 and extended with LitElement. The design is based on shadcn/ui.
4 |
5 | ## Documentations
6 |
7 | | **Version** | **Status** |
8 | |:---------------------------------------:|:---------------:|
9 | | [Version 2](https://franken-ui.dev) | ⚡ Active |
10 | | [Version 1](https://uno.franken-ui.dev) | 💀 Discontinued |
11 |
12 | ## Support
13 |
14 | Franken UI is an independent, MIT-licensed open source project with its ongoing development made possible entirely by the support of the community. If Franken UI has been beneficial to you in any way, please consider contributing by making a donation, which will help maintain and improve it for the benefit of everyone.
15 |
16 | Thanks to the following:
17 |
18 |
40 |
41 | ## Hire Me
42 |
43 | I maybe open to new projects and collaborations! Feel free to [get in touch](mailto:reden@franken-ui.dev) to discuss potential collaborations or freelance work.
44 |
45 | ## License
46 |
47 | Licensed under the [MIT license](https://github.com/franken-ui/ui/blob/master/LICENSE.md).
48 |
--------------------------------------------------------------------------------
/dist/bin.d.ts:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | export {};
3 |
--------------------------------------------------------------------------------
/dist/bin.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | import init from './cli/init/index.js';
3 | const args = process.argv.slice(2);
4 | switch (args[0]) {
5 | case 'init':
6 | init(process.argv.slice(3));
7 | break;
8 | default:
9 | console.error(`Invalid command: ${args[0]}`);
10 | break;
11 | }
12 |
--------------------------------------------------------------------------------
/dist/cli/helpers/common.d.ts:
--------------------------------------------------------------------------------
1 | export declare function parseArgs(args: string[], safelist: string[], map: {
2 | [key: string]: string;
3 | }): string[];
4 |
--------------------------------------------------------------------------------
/dist/cli/helpers/common.js:
--------------------------------------------------------------------------------
1 | import uniq from 'lodash/uniq.js';
2 | export function parseArgs(args, safelist, map) {
3 | const result = [];
4 | const invalidCommands = [];
5 | args.forEach((arg) => {
6 | if (/^-[^-]/.test(arg)) {
7 | for (let i = 1; i < arg.length; i++) {
8 | const char = arg[i];
9 | const mappedArg = map[char];
10 | if (mappedArg && safelist.includes(mappedArg)) {
11 | result.push(mappedArg);
12 | }
13 | else {
14 | invalidCommands.push(`-${char}`);
15 | }
16 | }
17 | }
18 | else if (safelist.includes(arg)) {
19 | result.push(arg);
20 | }
21 | else {
22 | invalidCommands.push(arg);
23 | }
24 | });
25 | if (invalidCommands.length > 0) {
26 | console.error(`Invalid command ${invalidCommands.join(' ')}`);
27 | process.exit(1);
28 | }
29 | return uniq(result);
30 | }
31 |
--------------------------------------------------------------------------------
/dist/cli/init/index.d.ts:
--------------------------------------------------------------------------------
1 | export default function (args: string[]): void;
2 |
--------------------------------------------------------------------------------
/dist/cli/init/index.js:
--------------------------------------------------------------------------------
1 | import { existsSync, copyFileSync } from 'fs';
2 | import { join, dirname } from 'path';
3 | import { parseArgs } from '../helpers/common.js';
4 | import { fileURLToPath } from 'url';
5 | const __filename = fileURLToPath(import.meta.url);
6 | const __dirname = dirname(__filename);
7 | const extensions = ['js', 'cjs', 'ts'];
8 | function copy(stub, filename) {
9 | copyFileSync(join(__dirname, 'stubs', stub), join(process.cwd(), filename));
10 | console.log('Created config file:', filename);
11 | }
12 | export default function (args) {
13 | const map = { p: '--postcss', f: '--force' };
14 | const safelist = ['-p', '--postcss', '-f', '--force'];
15 | args = parseArgs(args, safelist, map);
16 | if (extensions.some((extension) => existsSync(`tailwind.config.${extension}`))) {
17 | console.error('tailwind.config.js already exists');
18 | }
19 | else {
20 | (() => {
21 | copy('tailwind.config.js', 'tailwind.config.js');
22 | })();
23 | }
24 | if (args.includes('--postcss')) {
25 | if (extensions.some((extension) => existsSync(`postcss.config.${extension}`))) {
26 | console.error('postcss.config.js already exists');
27 | return;
28 | }
29 | copy('postcss.config.cjs', 'postcss.config.cjs');
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/dist/cli/init/stubs/postcss.config.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: [
3 | require('tailwindcss'),
4 | require('franken-ui/postcss/combine-duplicated-selectors')({
5 | removeDuplicatedProperties: true
6 | })
7 | ]
8 | };
9 |
--------------------------------------------------------------------------------
/dist/cli/init/stubs/postcss.config.d.cts:
--------------------------------------------------------------------------------
1 | export let plugins: any[];
2 |
--------------------------------------------------------------------------------
/dist/cli/init/stubs/tailwind.config.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: import("tailwindcss").Config;
2 | export default _default;
3 |
--------------------------------------------------------------------------------
/dist/cli/init/stubs/tailwind.config.js:
--------------------------------------------------------------------------------
1 | import franken from 'franken-ui/shadcn-ui/preset-quick';
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | export default {
5 | presets: [franken()],
6 | content: [],
7 | safelist: [
8 | {
9 | pattern: /^uk-/
10 | },
11 | 'ProseMirror',
12 | 'ProseMirror-focused',
13 | 'tiptap',
14 | 'mr-2',
15 | 'mt-2',
16 | 'opacity-50'
17 | ],
18 | theme: {
19 | extend: {}
20 | },
21 | plugins: []
22 | };
23 |
--------------------------------------------------------------------------------
/dist/components/accordion.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-accordion-title': {
3 | display: string;
4 | justifyContent: string;
5 | alignItems: string;
6 | overflow: string;
7 | padding: string;
8 | fontWeight: string;
9 | };
10 | '.uk-accordion-title:hover': {
11 | textDecoration: string;
12 | };
13 | '.uk-accordion-icon': {
14 | flex: string;
15 | transition: string;
16 | color: string;
17 | };
18 | '.uk-open > .uk-accordion-title > .uk-accordion-icon': {
19 | transform: string;
20 | };
21 | '.uk-accordion-content': {
22 | display: string;
23 | padding: string;
24 | };
25 | '.uk-accordion-content[hidden]': {
26 | display: string;
27 | };
28 | '.uk-accordion > li': {
29 | borderWidth: string;
30 | borderStyle: string;
31 | borderColor: string;
32 | };
33 | };
34 | export default _default;
35 |
--------------------------------------------------------------------------------
/dist/components/accordion.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-accordion-title': {
3 | // Layout
4 | display: 'var(--uk-accordion-title-display, flex)',
5 | justifyContent: 'var(--uk-accordion-title-justify, space-between)',
6 | alignItems: 'var(--uk-accordion-title-align, start)',
7 | overflow: 'var(--uk-accordion-title-overflow, hidden)',
8 | padding: 'var(--uk-accordion-title-padding, 1rem 0 1rem 0)',
9 | fontWeight: 'var(--uk-accordion-title-font, 500)'
10 | },
11 | '.uk-accordion-title:hover': {
12 | textDecoration: 'var(--uk-accordion-title-hover-decoration, underline)'
13 | },
14 | '.uk-accordion-icon': {
15 | flex: 'var(--uk-accordion-icon-flex, none)',
16 | transition: 'var(--uk-accordion-icon-transition, 300ms transform)',
17 | color: 'var(--uk-accordion-icon-color, hsl(var(--muted-foreground)))'
18 | },
19 | '.uk-open > .uk-accordion-title > .uk-accordion-icon': {
20 | transform: 'rotate(180deg)'
21 | },
22 | '.uk-accordion-content': {
23 | display: 'var(--uk-accordion-content-display, flow-root)',
24 | padding: 'var(--uk-accordion-content-padding, 0 0 1rem 0)'
25 | },
26 | '.uk-accordion-content[hidden]': {
27 | display: 'none'
28 | },
29 | '.uk-accordion > li': {
30 | borderWidth: 'var(--uk-accordion-item-border-width, 0 0 1px 0)',
31 | borderStyle: 'var(--uk-accordion-item-border-style, solid)',
32 | borderColor: 'var(--uk-accordion-item-border-color, hsl(var(--border)))'
33 | }
34 | };
35 |
--------------------------------------------------------------------------------
/dist/components/alert.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-alert': {
3 | position: string;
4 | padding: string;
5 | backgroundColor: string;
6 | color: string;
7 | borderRadius: string;
8 | borderWidth: string;
9 | borderStyle: string;
10 | borderColor: string;
11 | };
12 | '.uk-alert-close': {
13 | position: string;
14 | inset: string;
15 | };
16 | '.uk-alert-destructive': {
17 | '--uk-alert-bg': string;
18 | '--uk-alert-color': string;
19 | '--uk-alert-border-color': string;
20 | };
21 | '.uk-alert a:not([class])': {
22 | fontWeight: string;
23 | textDecorationLine: string;
24 | textUnderlineOffset: string;
25 | };
26 | '.uk-alert-title': {
27 | fontWeight: string;
28 | lineHeight: string;
29 | letterSpacing: string;
30 | };
31 | };
32 | export default _default;
33 |
--------------------------------------------------------------------------------
/dist/components/alert.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-alert': {
3 | // Layout
4 | position: 'var(--uk-alert-position, relative)',
5 | padding: 'var(--uk-alert-padding, 1rem 2rem 1rem 1rem)',
6 | // Visual
7 | backgroundColor: 'var(--uk-alert-bg, hsl(var(--muted) / .5))',
8 | color: 'var(--uk-alert-color, hsl(var(--foreground)))',
9 | borderRadius: 'var(--uk-alert-radius, var(--uk-global-radius))',
10 | borderWidth: 'var(--uk-alert-border-width, 1px)',
11 | borderStyle: 'var(--uk-alert-border-style, solid)',
12 | borderColor: 'var(--uk-alert-border-color, hsl(var(--border)))'
13 | },
14 | '.uk-alert-close': {
15 | // Layout
16 | position: 'var(--uk-alert-close-position, absolute)',
17 | inset: 'var(--uk-alert-close-inset, 1rem 1rem auto auto)'
18 | },
19 | '.uk-alert-destructive': {
20 | '--uk-alert-bg': 'hsl(var(--destructive))',
21 | '--uk-alert-color': 'hsl(var(--destructive-foreground))',
22 | '--uk-alert-border-color': 'hsl(var(--destructive))'
23 | },
24 | '.uk-alert a:not([class])': {
25 | // Typography
26 | fontWeight: 'var(--uk-alert-link-font-weight, 500)',
27 | textDecorationLine: 'var(--uk-alert-link-decoration-line, underline)',
28 | textUnderlineOffset: 'var(--uk-alert-link-underline-offset, 4px)'
29 | },
30 | '.uk-alert-title': {
31 | // Typography
32 | fontWeight: 'var(--uk-alert-title-font-weight, 500)',
33 | lineHeight: 'var(--uk-alert-title-leading, none)',
34 | letterSpacing: 'var(--uk-alert-title-tracking, -0.025em)' // Using Tailwind-like naming
35 | }
36 | };
37 |
--------------------------------------------------------------------------------
/dist/components/avatar.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-avatar': {
3 | backgroundColor: string;
4 | borderRadius: string;
5 | position: string;
6 | display: string;
7 | height: string;
8 | width: string;
9 | alignItems: string;
10 | justifyContent: string;
11 | };
12 | '.uk-avatar-image': {
13 | height: string;
14 | width: string;
15 | overflow: string;
16 | };
17 | '.uk-avatar.uk-avatar-rounded': {
18 | borderRadius: string;
19 | };
20 | '.uk-avatar.uk-avatar-rounded img, .uk-avatar.uk-avatar-rounded .uk-avatar-text': {
21 | borderRadius: string;
22 | };
23 | '.uk-avatar.uk-avatar-bordered': {
24 | borderWidth: string;
25 | borderColor: string;
26 | padding: string;
27 | };
28 | '.uk-avatar img': {
29 | borderRadius: string;
30 | height: string;
31 | width: string;
32 | objectFit: string;
33 | };
34 | '.uk-avatar-dot::after, .uk-avatar-dot-top::after, .uk-avatar-dot-top-right::after, .uk-avatar-dot-right::after, .uk-avatar-dot-bottom-right::after, .uk-avatar-dot-bottom::after, .uk-avatar-dot-bottom-left::after, .uk-avatar-dot-left::after, .uk-avatar-dot-top-left::after': {
35 | content: string;
36 | position: string;
37 | height: string;
38 | width: string;
39 | borderRadius: string;
40 | borderWidth: string;
41 | borderColor: string;
42 | backgroundColor: string;
43 | transform: string;
44 | zIndex: string;
45 | };
46 | '.uk-avatar-dot::after, .uk-avatar-dot-bottom-right::after': {
47 | bottom: string;
48 | right: string;
49 | transform: string;
50 | };
51 | '.uk-avatar-dot-top::after': {
52 | top: string;
53 | left: string;
54 | transform: string;
55 | };
56 | '.uk-avatar-dot-top-right::after': {
57 | top: string;
58 | right: string;
59 | transform: string;
60 | };
61 | '.uk-avatar-dot-right::after': {
62 | top: string;
63 | right: string;
64 | transform: string;
65 | };
66 | '.uk-avatar-dot-bottom::after': {
67 | bottom: string;
68 | left: string;
69 | transform: string;
70 | };
71 | '.uk-avatar-dot-bottom-left::after': {
72 | bottom: string;
73 | left: string;
74 | transform: string;
75 | };
76 | '.uk-avatar-dot-left::after': {
77 | top: string;
78 | left: string;
79 | transform: string;
80 | };
81 | '.uk-avatar-dot-top-left::after': {
82 | top: string;
83 | left: string;
84 | transform: string;
85 | };
86 | '.uk-avatar-text': {
87 | height: string;
88 | width: string;
89 | display: string;
90 | justifyContent: string;
91 | alignItems: string;
92 | borderRadius: string;
93 | };
94 | };
95 | export default _default;
96 |
--------------------------------------------------------------------------------
/dist/components/badge.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-badge': {
3 | display: string;
4 | justifyContent: string;
5 | alignItems: string;
6 | height: string;
7 | minWidth: string;
8 | padding: string;
9 | fontSize: string;
10 | lineHeight: string;
11 | fontWeight: string;
12 | borderRadius: string;
13 | boxShadow: string;
14 | border: string;
15 | backgroundColor: string;
16 | color: string;
17 | };
18 | '.uk-badge:hover': {
19 | transitionProperty: string;
20 | transitionDuration: string;
21 | transitionTimingFunction: string;
22 | opacity: string;
23 | };
24 | '.uk-badge-primary': {
25 | '--uk-badge-border': string;
26 | '--uk-badge-bg': string;
27 | '--uk-badge-color': string;
28 | };
29 | '.uk-badge-secondary': {
30 | '--uk-badge-border': string;
31 | '--uk-badge-bg': string;
32 | '--uk-badge-color': string;
33 | };
34 | '.uk-badge-destructive': {
35 | '--uk-badge-border': string;
36 | '--uk-badge-bg': string;
37 | '--uk-badge-color': string;
38 | };
39 | };
40 | export default _default;
41 |
--------------------------------------------------------------------------------
/dist/components/badge.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-badge': {
3 | // Layout
4 | display: 'var(--uk-badge-display, inline-flex)',
5 | justifyContent: 'var(--uk-badge-justify-content, center)',
6 | alignItems: 'var(--uk-badge-align-items, center)',
7 | height: 'var(--uk-badge-height, 1.25rem)',
8 | minWidth: 'var(--uk-badge-min-width, 1.25rem)',
9 | padding: 'var(--uk-badge-padding, 0 0.375rem)',
10 | // Typography
11 | fontSize: 'var(--uk-badge-font-size, var(--uk-global-font-size-s))',
12 | lineHeight: 'var(--uk-badge-leading, var(--uk-global-leading-s))',
13 | fontWeight: 'var(--uk-badge-font-weight, 600)',
14 | // Visual
15 | borderRadius: 'var(--uk-badge-radius, 500px)',
16 | boxShadow: 'var(--uk-badge-box-shadow, var(--uk-global-shadow))',
17 | border: 'var(--uk-badge-border, 1px solid hsl(var(--border)))',
18 | backgroundColor: 'var(--uk-badge-bg, transparent)',
19 | color: 'var(--uk-badge-color, hsl(var(--foreground)))'
20 | // States
21 | },
22 | '.uk-badge:hover': {
23 | transitionProperty: 'var(--uk-badge-hover-transition-property, background-color)',
24 | transitionDuration: 'var(--uk-badge-hover-transition-duration, 150ms)',
25 | transitionTimingFunction: 'var(--uk-badge-hover-transition-timing, ease-in-out)',
26 | opacity: 'var(--uk-badge-hover-opacity, 0.8)'
27 | },
28 | '.uk-badge-primary': {
29 | '--uk-badge-border': '1px solid hsl(var(--primary))',
30 | '--uk-badge-bg': 'hsl(var(--primary))',
31 | '--uk-badge-color': 'hsl(var(--primary-foreground))'
32 | },
33 | '.uk-badge-secondary': {
34 | '--uk-badge-border': '1px solid hsl(var(--secondary))',
35 | '--uk-badge-bg': 'hsl(var(--secondary))',
36 | '--uk-badge-color': 'hsl(var(--secondary-foreground))'
37 | },
38 | '.uk-badge-destructive': {
39 | '--uk-badge-border': '1px solid hsl(var(--destructive))',
40 | '--uk-badge-bg': 'hsl(var(--destructive))',
41 | '--uk-badge-color': 'hsl(var(--destructive-foreground))'
42 | }
43 | };
44 |
--------------------------------------------------------------------------------
/dist/components/breadcrumb.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-breadcrumb > *': {
3 | display: string;
4 | };
5 | '.uk-breadcrumb > * > *': {
6 | display: string;
7 | alignItems: string;
8 | color: string;
9 | };
10 | '.uk-breadcrumb > * > :hover': {
11 | textDecoration: string;
12 | color: string;
13 | transitionProperty: string;
14 | transitionDuration: string;
15 | transitionTimingFunction: string;
16 | };
17 | '.uk-breadcrumb > :last-child > span, .uk-breadcrumb > :last-child > a:not([href])': {
18 | fontWeight: string;
19 | color: string;
20 | };
21 | '.uk-breadcrumb > :nth-child(n + 2):not(.uk-first-column)::before': {
22 | content: string;
23 | display: string;
24 | margin: string;
25 | color: string;
26 | };
27 | '.uk-breadcrumb > .uk-disabled > *': {
28 | opacity: string;
29 | pointerEvents: string;
30 | };
31 | };
32 | export default _default;
33 |
--------------------------------------------------------------------------------
/dist/components/breadcrumb.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-breadcrumb > *': {
3 | // Layout
4 | display: 'var(--uk-breadcrumb-display, contents)'
5 | },
6 | '.uk-breadcrumb > * > *': {
7 | // Layout
8 | display: 'var(--uk-breadcrumb-item-display, inline-flex)',
9 | alignItems: 'var(--uk-breadcrumb-item-align, center)',
10 | // Typography
11 | color: 'var(--uk-breadcrumb-item-color, hsl(var(--muted-foreground)))'
12 | },
13 | '.uk-breadcrumb > * > :hover': {
14 | // Typography
15 | textDecoration: 'var(--uk-breadcrumb-item-hover-decoration, none)',
16 | color: 'var(--uk-breadcrumb-item-hover-color, hsl(var(--foreground)))',
17 | // Hover-only transition
18 | transitionProperty: 'var(--uk-breadcrumb-item-hover-transition-property, color)',
19 | transitionDuration: 'var(--uk-breadcrumb-item-hover-transition-duration, 150ms)',
20 | transitionTimingFunction: 'var(--uk-breadcrumb-item-hover-transition-timing, ease-in-out)'
21 | },
22 | '.uk-breadcrumb > :last-child > span, .uk-breadcrumb > :last-child > a:not([href])': {
23 | // Typography
24 | fontWeight: 'var(--uk-breadcrumb-active-font-weight, 500)',
25 | color: 'var(--uk-breadcrumb-active-color, hsl(var(--foreground)))'
26 | },
27 | '.uk-breadcrumb > :nth-child(n + 2):not(.uk-first-column)::before': {
28 | // Content
29 | content: 'var(--uk-breadcrumb-divider, "/")',
30 | display: 'var(--uk-breadcrumb-divider-display, inline-block)',
31 | // Layout
32 | margin: 'var(--uk-breadcrumb-divider-margin, 0 0.75rem 0 0.5rem)',
33 | // Typography
34 | color: 'var(--uk-breadcrumb-divider-color, hsl(var(--muted-foreground)))'
35 | },
36 | '.uk-breadcrumb > .uk-disabled > *': {
37 | // Visual
38 | opacity: 'var(--uk-breadcrumb-disabled-opacity, 0.5)',
39 | pointerEvents: 'none' // static no need to make it a variable
40 | }
41 | };
42 |
--------------------------------------------------------------------------------
/dist/components/card.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-card': {
3 | position: string;
4 | boxSizing: string;
5 | border: string;
6 | borderRadius: string;
7 | boxShadow: string;
8 | backgroundColor: string;
9 | color: string;
10 | };
11 | '.uk-card-body, .uk-card-header, .uk-card-footer': {
12 | padding: string;
13 | };
14 | '.uk-card-body > :last-child, .uk-card-header > :last-child, .uk-card-footer > :last-child': {
15 | marginBottom: string;
16 | };
17 | '.uk-card-title': {
18 | fontSize: string;
19 | fontWeight: string;
20 | lineHeight: string;
21 | letterSpacing: string;
22 | };
23 | '.uk-card-primary': {
24 | '--uk-card-border': string;
25 | '--uk-card-bg': string;
26 | '--uk-card-color': string;
27 | };
28 | '.uk-card-secondary': {
29 | '--uk-card-border': string;
30 | '--uk-card-bg': string;
31 | '--uk-card-color': string;
32 | };
33 | '.uk-card-destructive': {
34 | '--uk-card-border': string;
35 | '--uk-card-bg': string;
36 | '--uk-card-color': string;
37 | };
38 | '.uk-card-header + .uk-card-body, .uk-card-body + .uk-card-footer': {
39 | paddingTop: string;
40 | };
41 | '.uk-card-header ~ .uk-card-footer': {
42 | paddingTop: string;
43 | };
44 | };
45 | export default _default;
46 |
--------------------------------------------------------------------------------
/dist/components/card.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-card': {
3 | position: 'relative', // obvious value, no need for var
4 | boxSizing: 'border-box', // obvious value, no need for var
5 | border: 'var(--uk-card-border, 1px solid hsl(var(--border)))',
6 | borderRadius: 'var(--uk-card-radius, var(--uk-global-radius))',
7 | boxShadow: 'var(--uk-card-shadow, var(--uk-global-shadow))',
8 | backgroundColor: 'var(--uk-card-bg, hsl(var(--card)))',
9 | color: 'var(--uk-card-color, hsl(var(--card-foreground)))'
10 | },
11 | '.uk-card-body, .uk-card-header, .uk-card-footer': {
12 | padding: 'var(--uk-card-padding, 1rem)'
13 | },
14 | '.uk-card-body > :last-child, .uk-card-header > :last-child, .uk-card-footer > :last-child': {
15 | marginBottom: 'var(--uk-card-last-child-margin, 0)'
16 | },
17 | '.uk-card-title': {
18 | fontSize: 'var(--uk-card-title-font-size, 1.125rem)',
19 | fontWeight: 'var(--uk-card-title-weight, 600)',
20 | lineHeight: 'var(--uk-card-title-height, 1)',
21 | letterSpacing: 'var(--uk-card-title-tracking, -0.025em)'
22 | },
23 | // Variants can be simplified
24 | '.uk-card-primary': {
25 | '--uk-card-border': '1px solid transparent',
26 | '--uk-card-bg': 'hsl(var(--primary))',
27 | '--uk-card-color': 'hsl(var(--primary-foreground))'
28 | },
29 | '.uk-card-secondary': {
30 | '--uk-card-border': '1px solid transparent',
31 | '--uk-card-bg': 'hsl(var(--secondary))',
32 | '--uk-card-color': 'hsl(var(--secondary-foreground))'
33 | },
34 | '.uk-card-destructive': {
35 | '--uk-card-border': '1px solid transparent',
36 | '--uk-card-bg': 'hsl(var(--destructive))',
37 | '--uk-card-color': 'hsl(var(--destructive-foreground))'
38 | },
39 | // Spacing adjustments remain the same
40 | '.uk-card-header + .uk-card-body, .uk-card-body + .uk-card-footer': {
41 | paddingTop: 'var(--uk-card-adjacent-padding, 0)'
42 | },
43 | '.uk-card-header ~ .uk-card-footer': {
44 | paddingTop: 'var(--uk-card-header-footer-padding, 0)'
45 | }
46 | };
47 |
--------------------------------------------------------------------------------
/dist/components/cmd.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-cmd-header': {
3 | display: string;
4 | alignItems: string;
5 | gap: string;
6 | padding: string;
7 | };
8 | '.uk-cmd-header-input': {
9 | flex: string;
10 | padding: string;
11 | };
12 | '.uk-cmd-header-input input': {
13 | width: string;
14 | backgroundColor: string;
15 | };
16 | '.uk-cmd-header-input input:focus': {
17 | outline: string;
18 | };
19 | '.uk-cmd-header-input input::placeholder': {
20 | color: string;
21 | };
22 | '.uk-cmd-header-icon': {
23 | width: string;
24 | height: string;
25 | flex: string;
26 | color: string;
27 | };
28 | '.uk-cmd-header-esc': {
29 | flex: string;
30 | };
31 | '.uk-cmd-body': {
32 | maxHeight: string;
33 | };
34 | '.uk-cmd-item-wrapper': {
35 | display: string;
36 | flex: string;
37 | alignItems: string;
38 | };
39 | '.uk-cmd-item-icon': {
40 | marginRight: string;
41 | width: string;
42 | height: string;
43 | flex: string;
44 | };
45 | '.uk-cmd-item-text': {
46 | flex: string;
47 | };
48 | };
49 | export default _default;
50 |
--------------------------------------------------------------------------------
/dist/components/cmd.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-cmd-header': {
3 | display: 'flex', // obvious - standard header layout
4 | alignItems: 'center', // obvious - standard header layout
5 | gap: 'var(--uk-cmd-header-gap, 0.5rem)',
6 | padding: 'var(--uk-cmd-header-padding, 0 0.75rem)'
7 | },
8 | '.uk-cmd-header-input': {
9 | flex: '1', // obvious - should take remaining space
10 | padding: 'var(--uk-cmd-header-input-padding, 0.75rem 0)'
11 | },
12 | '.uk-cmd-header-input input': {
13 | width: '100%', // obvious - should fill container
14 | backgroundColor: 'transparent' // obvious - input should be transparent
15 | },
16 | '.uk-cmd-header-input input:focus': {
17 | outline: 'none'
18 | },
19 | '.uk-cmd-header-input input::placeholder': {
20 | color: 'var(--uk-cmd-input-placeholder-color, hsl(var(--muted-foreground)))'
21 | },
22 | '.uk-cmd-header-icon': {
23 | width: 'var(--uk-cmd-header-icon-size, 1rem)',
24 | height: 'var(--uk-cmd-header-icon-size, 1rem)',
25 | flex: 'none', // obvious - icon shouldn't grow/shrink
26 | color: 'var(--uk-cmd-header-icon-color, hsl(var(--muted-foreground)))'
27 | },
28 | '.uk-cmd-header-esc': {
29 | flex: 'none' // obvious - escape button shouldn't grow/shrink
30 | },
31 | '.uk-cmd-body': {
32 | maxHeight: 'var(--uk-cmd-body-max-height, 20rem)'
33 | },
34 | '.uk-cmd-item-wrapper': {
35 | display: 'flex', // obvious - standard item layout
36 | flex: '1', // obvious - should take full width
37 | alignItems: 'center' // obvious - vertical alignment
38 | },
39 | '.uk-cmd-item-icon': {
40 | marginRight: 'var(--uk-cmd-item-icon-margin, 0.5rem)',
41 | width: 'var(--uk-cmd-item-icon-size, 1rem)',
42 | height: 'var(--uk-cmd-item-icon-size, 1rem)',
43 | flex: 'none' // obvious - icon shouldn't grow/shrink
44 | },
45 | '.uk-cmd-item-text': {
46 | flex: '1' // obvious - should take remaining space
47 | }
48 | };
49 |
--------------------------------------------------------------------------------
/dist/components/comment.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-comment-body': {
3 | display: string;
4 | overflowWrap: string;
5 | wordWrap: string;
6 | };
7 | '.uk-comment-header': {
8 | display: string;
9 | marginBottom: string;
10 | };
11 | '.uk-comment-body > :last-child, .uk-comment-header > :last-child': {
12 | marginBottom: string;
13 | };
14 | '.uk-comment-title': {
15 | fontSize: string;
16 | fontWeight: string;
17 | };
18 | '.uk-comment-meta': {
19 | fontSize: string;
20 | lineHeight: string;
21 | marginTop: string;
22 | };
23 | '.uk-comment-list > :nth-child(n + 2)': {
24 | marginTop: string;
25 | };
26 | '.uk-comment-list .uk-comment ~ ul': {
27 | marginInlineStart: string;
28 | marginTop: string;
29 | borderInlineStartWidth: string;
30 | borderInlineStartStyle: string;
31 | borderInlineStartColor: string;
32 | };
33 | '.uk-comment-list .uk-comment ~ ul > :nth-child(n + 2)': {
34 | marginTop: string;
35 | };
36 | '.uk-comment-primary': {
37 | borderRadius: string;
38 | backgroundColor: string;
39 | color: string;
40 | };
41 | '.uk-comment': {
42 | padding: string;
43 | };
44 | '.uk-comment-avatar': {
45 | height: string;
46 | width: string;
47 | overflow: string;
48 | borderRadius: string;
49 | backgroundColor: string;
50 | };
51 | '.uk-comment-avatar img': {
52 | height: string;
53 | width: string;
54 | objectFit: string;
55 | };
56 | '.uk-comment-list .uk-comment ~ ul > li': {
57 | marginLeft: string;
58 | marginInlineStart: string;
59 | };
60 | };
61 | export default _default;
62 |
--------------------------------------------------------------------------------
/dist/components/comment.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-comment-body': {
3 | display: 'flow-root', // obvious - standard block formatting context
4 | overflowWrap: 'break-word', // obvious - prevent overflow
5 | wordWrap: 'break-word' // obvious - prevent overflow
6 | },
7 | '.uk-comment-header': {
8 | display: 'flow-root', // obvious - standard block formatting context
9 | marginBottom: 'var(--uk-comment-header-margin, 1.25rem)'
10 | },
11 | '.uk-comment-body > :last-child, .uk-comment-header > :last-child': {
12 | marginBottom: '0' // obvious - remove margin from last child
13 | },
14 | // Typography
15 | '.uk-comment-title': {
16 | fontSize: 'var(--uk-comment-title-font-size, 1rem)',
17 | fontWeight: 'var(--uk-comment-title-font-weight, 500)'
18 | },
19 | '.uk-comment-meta': {
20 | fontSize: 'var(--uk-comment-meta-font-size, var(--uk-global-font-size-s))',
21 | lineHeight: 'var(--uk-comment-meta-leading, var(--uk-global-leading-s))',
22 | marginTop: 'var(--uk-comment-meta-margin-top, 0.25rem)'
23 | },
24 | '.uk-comment-list > :nth-child(n + 2)': {
25 | marginTop: 'var(--uk-comment-list-gap, 0.75rem)'
26 | },
27 | // Nested comments
28 | '.uk-comment-list .uk-comment ~ ul': {
29 | marginInlineStart: 'var(--uk-comment-nested-margin, 1.5rem)',
30 | marginTop: 'var(--uk-comment-nested-margin-top, 1.5rem)',
31 | borderInlineStartWidth: 'var(--uk-comment-nested-border-width, 1px)',
32 | borderInlineStartStyle: 'var(--uk-comment-nested-border-style, solid)',
33 | borderInlineStartColor: 'var(--uk-comment-nested-border-color, hsl(var(--border)))'
34 | },
35 | '.uk-comment-list .uk-comment ~ ul > :nth-child(n + 2)': {
36 | marginTop: 'var(--uk-comment-nested-item-gap, 1.5rem)'
37 | },
38 | '.uk-comment-primary': {
39 | borderRadius: 'var(--uk-comment-primary-radius, var(--uk-global-radius))',
40 | backgroundColor: 'var(--uk-comment-primary-bg, hsl(var(--primary)))',
41 | color: 'var(--uk-comment-primary-color, hsl(var(--primary-foreground)))'
42 | },
43 | '.uk-comment': {
44 | padding: 'var(--uk-comment-padding, 0.75rem)'
45 | },
46 | // Avatar
47 | '.uk-comment-avatar': {
48 | height: 'var(--uk-comment-avatar-size, 2.5rem)',
49 | width: 'var(--uk-comment-avatar-size, 2.5rem)',
50 | overflow: 'hidden', // obvious - contain image
51 | borderRadius: 'var(--uk-comment-avatar-radius, 9999px)',
52 | backgroundColor: 'var(--uk-comment-avatar-bg, hsl(var(--muted)))'
53 | },
54 | '.uk-comment-avatar img': {
55 | height: '100%', // obvious - fill container
56 | width: '100%', // obvious - fill container
57 | objectFit: 'cover' // obvious - standard image cover
58 | },
59 | '.uk-comment-list .uk-comment ~ ul > li': {
60 | marginLeft: 'var(--uk-comment-nested-item-margin, 0.75rem)',
61 | marginInlineStart: 'var(--uk-comment-nested-item-margin, 0.75rem)'
62 | }
63 | };
64 |
--------------------------------------------------------------------------------
/dist/components/container.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-container': {
3 | display: string;
4 | boxSizing: string;
5 | maxWidth: string;
6 | marginLeft: string;
7 | marginRight: string;
8 | paddingLeft: string;
9 | paddingRight: string;
10 | };
11 | '.uk-container > :last-child': {
12 | marginBottom: string;
13 | };
14 | '.uk-container .uk-container': {
15 | paddingLeft: string;
16 | paddingRight: string;
17 | };
18 | '.uk-container-xs': {
19 | maxWidth: string;
20 | };
21 | '.uk-container-sm': {
22 | maxWidth: string;
23 | };
24 | '.uk-container-lg': {
25 | maxWidth: string;
26 | };
27 | '.uk-container-xl': {
28 | maxWidth: string;
29 | };
30 | '.uk-container-expand': {
31 | maxWidth: string;
32 | };
33 | '.uk-container-expand-left': {
34 | marginLeft: string;
35 | };
36 | '.uk-container-expand-right': {
37 | marginRight: string;
38 | };
39 | '.uk-container-item-padding-remove-left, .uk-container-item-padding-remove-right': {
40 | width: string;
41 | };
42 | '.uk-container-item-padding-remove-left': {
43 | marginLeft: string;
44 | };
45 | '.uk-container-item-padding-remove-right': {
46 | marginRight: string;
47 | };
48 | };
49 | export default _default;
50 |
--------------------------------------------------------------------------------
/dist/components/container.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-container': {
3 | display: 'var(--uk-container-display, flow-root)',
4 | boxSizing: 'var(--uk-container-box-sizing, content-box)',
5 | maxWidth: 'var(--uk-container-max-width, 1200px)',
6 | marginLeft: 'var(--uk-container-margin-x, auto)',
7 | marginRight: 'var(--uk-container-margin-x, auto)',
8 | paddingLeft: 'var(--uk-container-padding-x, 1rem)',
9 | paddingRight: 'var(--uk-container-padding-x, 1rem)'
10 | },
11 | '.uk-container > :last-child': {
12 | marginBottom: 'var(--uk-container-last-child-margin, 0)'
13 | },
14 | '.uk-container .uk-container': {
15 | paddingLeft: 'var(--uk-nested-container-padding-x, 0)',
16 | paddingRight: 'var(--uk-nested-container-padding-x, 0)'
17 | },
18 | '.uk-container-xs': {
19 | maxWidth: 'var(--uk-container-xs-max-width, 750px)'
20 | },
21 | '.uk-container-sm': {
22 | maxWidth: 'var(--uk-container-sm-max-width, 900px)'
23 | },
24 | '.uk-container-lg': {
25 | maxWidth: 'var(--uk-container-lg-max-width, 1400px)'
26 | },
27 | '.uk-container-xl': {
28 | maxWidth: 'var(--uk-container-xl-max-width, 1600px)'
29 | },
30 | '.uk-container-expand': {
31 | maxWidth: 'var(--uk-container-expand-max-width, none)'
32 | },
33 | '.uk-container-expand-left': {
34 | marginLeft: 'var(--uk-container-expand-left-margin, 0)'
35 | },
36 | '.uk-container-expand-right': {
37 | marginRight: 'var(--uk-container-expand-right-margin, 0)'
38 | },
39 | '.uk-container-item-padding-remove-left, .uk-container-item-padding-remove-right': {
40 | width: 'var(--uk-container-item-padding-remove-width, calc(100% + 1rem))'
41 | },
42 | '.uk-container-item-padding-remove-left': {
43 | marginLeft: 'var(--uk-container-item-padding-remove-left-margin, -1rem)'
44 | },
45 | '.uk-container-item-padding-remove-right': {
46 | marginRight: 'var(--uk-container-item-padding-remove-right-margin, -1rem)'
47 | }
48 | };
49 |
--------------------------------------------------------------------------------
/dist/components/cover.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '[uk-cover]:where(canvas, iframe, svg), [data-uk-cover]:where(canvas, iframe, svg)': {
3 | maxWidth: string;
4 | position: string;
5 | left: string;
6 | top: string;
7 | '--uk-position-translate-x': string;
8 | '--uk-position-translate-y': string;
9 | transform: string;
10 | };
11 | 'iframe[uk-cover], iframe[data-uk-cover]': {
12 | pointerEvents: string;
13 | };
14 | '[uk-cover]:where(img, video), [data-uk-cover]:where(img, video)': {
15 | position: string;
16 | top: string;
17 | left: string;
18 | width: string;
19 | height: string;
20 | boxSizing: string;
21 | objectFit: string;
22 | objectPosition: string;
23 | };
24 | '.uk-cover-container': {
25 | overflow: string;
26 | position: string;
27 | };
28 | };
29 | export default _default;
30 |
--------------------------------------------------------------------------------
/dist/components/cover.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '[uk-cover]:where(canvas, iframe, svg), [data-uk-cover]:where(canvas, iframe, svg)': {
3 | maxWidth: 'none',
4 | position: 'absolute',
5 | left: '50%',
6 | top: '50%',
7 | '--uk-position-translate-x': '-50%',
8 | '--uk-position-translate-y': '-50%',
9 | transform: 'translate(var(--uk-position-translate-x), var(--uk-position-translate-y))'
10 | },
11 | 'iframe[uk-cover], iframe[data-uk-cover]': {
12 | pointerEvents: 'none'
13 | },
14 | '[uk-cover]:where(img, video), [data-uk-cover]:where(img, video)': {
15 | position: 'absolute',
16 | top: '0',
17 | left: '0',
18 | width: '100%',
19 | height: '100%',
20 | boxSizing: 'border-box',
21 | objectFit: 'cover',
22 | objectPosition: 'center'
23 | },
24 | '.uk-cover-container': {
25 | overflow: 'hidden',
26 | position: 'relative'
27 | }
28 | };
29 |
--------------------------------------------------------------------------------
/dist/components/divider.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | "[class*='uk-divider']": {
3 | border: string;
4 | height: string;
5 | };
6 | '.uk-hr': {
7 | borderColor: string;
8 | };
9 | '.uk-divider-icon': {
10 | position: string;
11 | height: string;
12 | backgroundImage: string;
13 | backgroundRepeat: string;
14 | backgroundPosition: string;
15 | };
16 | '.uk-divider-icon::before, .uk-divider-icon::after': {
17 | content: string;
18 | position: string;
19 | top: string;
20 | maxWidth: string;
21 | borderBottom: string;
22 | };
23 | '.uk-divider-icon::before': {
24 | right: string;
25 | width: string;
26 | };
27 | '.uk-divider-icon::after': {
28 | left: string;
29 | width: string;
30 | };
31 | '.uk-divider-sm': {
32 | lineHeight: string;
33 | };
34 | '.uk-divider-sm::after': {
35 | content: string;
36 | display: string;
37 | width: string;
38 | maxWidth: string;
39 | borderTop: string;
40 | verticalAlign: string;
41 | borderBottom: string;
42 | };
43 | '.uk-divider-vertical': {
44 | width: string;
45 | height: string;
46 | marginLeft: string;
47 | marginRight: string;
48 | borderLeft: string;
49 | borderBottom: string;
50 | };
51 | };
52 | export default _default;
53 |
--------------------------------------------------------------------------------
/dist/components/divider.js:
--------------------------------------------------------------------------------
1 | export default {
2 | "[class*='uk-divider']": {
3 | border: 'none', // Static - core reset
4 | height: 'var(--uk-divider-height, 1px)'
5 | },
6 | '.uk-hr': {
7 | borderColor: 'var(--uk-hr-color, hsl(var(--border)))'
8 | },
9 | '.uk-divider-icon': {
10 | position: 'relative', // Static - core positioning
11 | height: 'var(--uk-divider-icon-height, 1.25rem)',
12 | backgroundImage: 'var(--uk-divider-icon-image)',
13 | backgroundRepeat: 'no-repeat', // Static - icon behavior
14 | backgroundPosition: '50% 50%' // Static - icon centering
15 | },
16 | '.uk-divider-icon::before, .uk-divider-icon::after': {
17 | content: '""', // Static - pseudo element
18 | position: 'absolute', // Static - core positioning
19 | top: '50%', // Static - vertical centering
20 | maxWidth: 'calc(50% - (3.5rem / 2))', // Static - line width calculation
21 | borderBottom: 'var(--uk-divider-icon-line-border, 1px solid hsl(var(--border)))'
22 | },
23 | '.uk-divider-icon::before': {
24 | right: 'calc(50% + (3.5rem / 2))', // Static - line positioning
25 | width: '100%' // Static - full width
26 | },
27 | '.uk-divider-icon::after': {
28 | left: 'calc(50% + (3.5rem / 2))', // Static - line positioning
29 | width: '100%' // Static - full width
30 | },
31 | '.uk-divider-sm': {
32 | lineHeight: '0' // Static - remove line spacing
33 | },
34 | '.uk-divider-sm::after': {
35 | content: '""', // Static - pseudo element
36 | display: 'inline-block', // Static - layout behavior
37 | width: 'var(--uk-divider-sm-width, 100px)',
38 | maxWidth: '100%', // Static - responsive behavior
39 | borderTop: 'var(--uk-divider-sm-border, 1px solid hsl(var(--border)))',
40 | verticalAlign: 'top', // Static - alignment
41 | borderBottom: 'var(--uk-divider-sm-border, 1px solid hsl(var(--border)))'
42 | },
43 | '.uk-divider-vertical': {
44 | width: 'max-content', // Static - content fitting
45 | height: 'var(--uk-divider-vertical-height, 100px)',
46 | marginLeft: 'auto', // Static - horizontal centering
47 | marginRight: 'auto', // Static - horizontal centering
48 | borderLeft: 'var(--uk-divider-vertical-border, 1px solid hsl(var(--border)))',
49 | borderBottom: 'var(--uk-divider-vertical-border, 1px solid hsl(var(--border)))'
50 | }
51 | };
52 |
--------------------------------------------------------------------------------
/dist/components/dotnav.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-dotnav': {
3 | display: string;
4 | flexWrap: string;
5 | marginLeft: string;
6 | };
7 | '.uk-dotnav > *': {
8 | flex: string;
9 | paddingLeft: string;
10 | };
11 | '.uk-dotnav > * > *': {
12 | display: string;
13 | boxSizing: string;
14 | width: string;
15 | height: string;
16 | border: string;
17 | borderRadius: string;
18 | backgroundColor: string;
19 | textIndent: string;
20 | overflow: string;
21 | whiteSpace: string;
22 | transition: string;
23 | transitionProperty: string;
24 | };
25 | '.uk-dotnav > * > :hover': {
26 | borderColor: string;
27 | backgroundColor: string;
28 | };
29 | '.uk-dotnav > * > :active': {
30 | borderColor: string;
31 | backgroundColor: string;
32 | };
33 | '.uk-dotnav > .uk-active > *': {
34 | borderColor: string;
35 | backgroundColor: string;
36 | };
37 | '.uk-dotnav-vertical': {
38 | flexDirection: string;
39 | marginLeft: string;
40 | marginTop: string;
41 | };
42 | '.uk-dotnav-vertical > *': {
43 | paddingLeft: string;
44 | paddingTop: string;
45 | };
46 | };
47 | export default _default;
48 |
--------------------------------------------------------------------------------
/dist/components/dotnav.js:
--------------------------------------------------------------------------------
1 | export default {
2 | // Base dotnav styles
3 | '.uk-dotnav': {
4 | display: 'flex', // Removed variable - fundamental layout
5 | flexWrap: 'wrap', // Removed variable - fundamental layout
6 | marginLeft: 'var(--uk-dotnav-margin-left, -0.75rem)'
7 | },
8 | // Dotnav items
9 | '.uk-dotnav > *': {
10 | flex: 'none', // Removed variable - fundamental layout
11 | paddingLeft: 'var(--uk-dotnav-item-padding, 0.75rem)'
12 | },
13 | // Dotnav dots
14 | '.uk-dotnav > * > *': {
15 | // Layout
16 | display: 'block', // Removed variable - fundamental layout
17 | boxSizing: 'border-box', // Removed variable - fundamental box model
18 | width: 'var(--uk-dotnav-dot-size, 10px)',
19 | height: 'var(--uk-dotnav-dot-size, 10px)', // Using same variable for consistent sizing
20 | // Visual
21 | border: 'var(--uk-dotnav-dot-border, 1px solid hsl(var(--primary)))', // Combined border properties
22 | borderRadius: '50%', // Removed variable - fundamental shape for dots
23 | backgroundColor: 'var(--uk-dotnav-dot-bg, transparent)',
24 | // Accessibility
25 | textIndent: '100%', // Removed variable - fundamental accessibility
26 | overflow: 'hidden', // Removed variable - fundamental accessibility
27 | whiteSpace: 'nowrap', // Removed variable - fundamental text behavior
28 | // Transitions
29 | transition: '0.2s ease-in-out', // Removed variable - fundamental transition
30 | transitionProperty: 'background-color, border-color' // Removed variable - fundamental properties
31 | },
32 | // States
33 | '.uk-dotnav > * > :hover': {
34 | borderColor: 'var(--uk-dotnav-dot-hover-border, transparent)',
35 | backgroundColor: 'var(--uk-dotnav-dot-hover-bg, hsl(var(--primary)))'
36 | },
37 | '.uk-dotnav > * > :active': {
38 | borderColor: 'var(--uk-dotnav-dot-active-border, transparent)',
39 | backgroundColor: 'var(--uk-dotnav-dot-active-bg, hsl(var(--primary)))'
40 | },
41 | '.uk-dotnav > .uk-active > *': {
42 | borderColor: 'var(--uk-dotnav-dot-current-border, transparent)',
43 | backgroundColor: 'var(--uk-dotnav-dot-current-bg, hsl(var(--primary)))'
44 | },
45 | // Vertical variant
46 | '.uk-dotnav-vertical': {
47 | flexDirection: 'column', // Removed variable - fundamental layout
48 | marginLeft: '0', // Removed variable - fundamental reset
49 | marginTop: 'var(--uk-dotnav-vertical-margin-top, -0.75rem)'
50 | },
51 | '.uk-dotnav-vertical > *': {
52 | paddingLeft: '0', // Removed variable - fundamental reset
53 | paddingTop: 'var(--uk-dotnav-vertical-item-padding-top, 0.75rem)'
54 | }
55 | };
56 |
--------------------------------------------------------------------------------
/dist/components/drop.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-drop': {
3 | display: string;
4 | position: string;
5 | zIndex: string;
6 | boxSizing: string;
7 | width: string;
8 | '--uk-position-offset': string;
9 | '--uk-position-viewport-offset': string;
10 | };
11 | '.uk-drop.uk-open': {
12 | display: string;
13 | };
14 | '.uk-drop-stack .uk-drop-grid > *': {
15 | width: string;
16 | };
17 | '.uk-drop-parent-icon': {
18 | marginLeft: string;
19 | transition: string;
20 | };
21 | "[aria-expanded='true'] > .uk-drop-parent-icon": {
22 | transform: string;
23 | };
24 | '.uk-dropbar': {
25 | '--uk-position-offset': string;
26 | '--uk-position-shift-offset': string;
27 | '--uk-position-viewport-offset': string;
28 | width: string;
29 | backgroundColor: string;
30 | };
31 | '.uk-dropbar > :last-child': {
32 | marginBottom: string;
33 | };
34 | '.uk-dropbar-lg': {
35 | padding: string;
36 | };
37 | '.uk-dropdown': {
38 | '--uk-position-offset': string;
39 | '--uk-position-viewport-offset': string;
40 | width: string;
41 | borderRadius: string;
42 | boxShadow: string;
43 | borderWidth: string;
44 | borderStyle: string;
45 | borderColor: string;
46 | backgroundColor: string;
47 | color: string;
48 | };
49 | '.uk-dropdown-dropbar': {
50 | width: string;
51 | backgroundColor: string;
52 | boxShadow: string;
53 | '--uk-position-viewport-offset': string;
54 | };
55 | '.uk-dropdown-nav': {
56 | '--uk-nav-item-hover-decoration': string;
57 | '--uk-nav-item-padding': string;
58 | '--uk-nav-item-margin': string;
59 | '--uk-nav-item-display': string;
60 | '--uk-nav-item-align-items': string;
61 | '--uk-nav-item-hover-bg': string;
62 | '--uk-nav-item-hover-color': string;
63 | '--uk-nav-header-padding': string;
64 | '--uk-nav-header-margin': string;
65 | '--uk-nav-header-font-weight': string;
66 | '--uk-nav-divider-margin': string;
67 | '--uk-nav-divider-width': string;
68 | '--uk-nav-divider-style': string;
69 | '--uk-nav-divider-color': string;
70 | 'user-select': string;
71 | };
72 | '.uk-dropnav-dropbar': {
73 | position: string;
74 | zIndex: string;
75 | padding: string;
76 | left: string;
77 | right: string;
78 | };
79 | };
80 | export default _default;
81 |
--------------------------------------------------------------------------------
/dist/components/form/custom-select.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-custom-select-search': {
3 | display: string;
4 | alignItems: string;
5 | padding: string;
6 | };
7 | '.uk-custom-select-search svg': {
8 | margin: string;
9 | opacity: string;
10 | };
11 | '.uk-custom-select-search input': {
12 | width: string;
13 | padding: string;
14 | backgroundColor: string;
15 | outline: string;
16 | '&::placeholder': {
17 | color: string;
18 | };
19 | };
20 | '.uk-custom-select-options': {
21 | maxHeight: string;
22 | };
23 | '.uk-custom-select-item-wrapper': {
24 | display: string;
25 | flex: string;
26 | alignItems: string;
27 | };
28 | '.uk-custom-select-item-icon': {
29 | margin: string;
30 | flexShrink: string;
31 | };
32 | '.uk-custom-select-item-text': {
33 | flex: string;
34 | };
35 | '.uk-custom-select-item-check': {
36 | margin: string;
37 | flexShrink: string;
38 | };
39 | };
40 | export default _default;
41 |
--------------------------------------------------------------------------------
/dist/components/form/custom-select.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-custom-select-search': {
3 | // Layout
4 | display: 'var(--uk-custom-select-search-display, flex)',
5 | alignItems: 'var(--uk-custom-select-search-align, center)',
6 | padding: 'var(--uk-custom-select-search-padding, 0 0.75rem)'
7 | },
8 | '.uk-custom-select-search svg': {
9 | // Layout
10 | margin: 'var(--uk-custom-select-search-icon-margin, 0 0.5rem 0 0)',
11 | // Visual
12 | opacity: 'var(--uk-custom-select-search-icon-opacity, 0.5)'
13 | },
14 | '.uk-custom-select-search input': {
15 | // Layout
16 | width: 'var(--uk-custom-select-search-input-width, 100%)',
17 | padding: 'var(--uk-custom-select-search-input-padding, 0.75rem 0)',
18 | // Visual
19 | backgroundColor: 'transparent',
20 | outline: 'none',
21 | '&::placeholder': {
22 | color: 'var(--uk-custom-select-search-placeholder-color, hsl(var(--muted-foreground)))'
23 | }
24 | },
25 | '.uk-custom-select-options': {
26 | // Layout
27 | maxHeight: 'var(--uk-custom-select-options-max-height, 10rem)'
28 | },
29 | '.uk-custom-select-item-wrapper': {
30 | // Layout
31 | display: 'var(--uk-custom-select-item-wrapper-display, flex)',
32 | flex: 'var(--uk-custom-select-item-wrapper-flex, 1)',
33 | alignItems: 'var(--uk-custom-select-item-wrapper-align, center)'
34 | },
35 | '.uk-custom-select-item-icon': {
36 | // Layout
37 | margin: 'var(--uk-custom-select-item-icon-margin, 0 0.5rem 0 0)',
38 | flexShrink: 'var(--uk-custom-select-item-icon-shrink, 0)'
39 | },
40 | '.uk-custom-select-item-text': {
41 | // Layout
42 | flex: 'var(--uk-custom-select-item-text-flex, 1)'
43 | },
44 | '.uk-custom-select-item-check': {
45 | // Layout
46 | margin: 'var(--uk-custom-select-item-check-margin, 0 0 0 0.5rem)',
47 | flexShrink: 'var(--uk-custom-select-item-check-shrink, 0)'
48 | }
49 | };
50 |
--------------------------------------------------------------------------------
/dist/components/form/keyval.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-keyval': {
3 | borderRadius: string;
4 | boxShadow: string;
5 | borderWidth: string;
6 | borderColor: string;
7 | };
8 | '.uk-keyval-value-wrapper': {
9 | width: string;
10 | };
11 | '.uk-keyval-actions': {
12 | display: string;
13 | flexWrap: string;
14 | columnGap: string;
15 | };
16 | };
17 | export default _default;
18 |
--------------------------------------------------------------------------------
/dist/components/form/keyval.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-keyval': {
3 | borderRadius: 'var(--uk-global-radius)',
4 | boxShadow: 'var(--uk-global-shadow)',
5 | borderWidth: '1px',
6 | borderColor: 'hsl(var(--border))'
7 | },
8 | '.uk-keyval-value-wrapper': { width: '100%' },
9 | '.uk-keyval-actions': {
10 | display: 'flex',
11 | flexWrap: 'nowrap',
12 | columnGap: '0.5rem'
13 | }
14 | };
15 |
--------------------------------------------------------------------------------
/dist/components/form/pin.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-input-pin': {
3 | display: string;
4 | alignItems: string;
5 | borderRadius: string;
6 | boxShadow: string;
7 | '--focus-shadow-color': string;
8 | };
9 | '.uk-input-pin input': {
10 | height: string;
11 | width: string;
12 | position: string;
13 | margin: string;
14 | display: string;
15 | fontSize: string;
16 | lineHeight: string;
17 | textAlign: string;
18 | backgroundColor: string;
19 | outline: string;
20 | borderWidth: string;
21 | borderStyle: string;
22 | borderColor: string;
23 | '&::placeholder': {
24 | color: string;
25 | };
26 | '&:focus': {
27 | zIndex: string;
28 | outlineWidth: string;
29 | outlineStyle: string;
30 | outlineColor: string;
31 | outlineOffset: string;
32 | boxShadow: string;
33 | transitionProperty: string;
34 | transitionDuration: string;
35 | transitionTimingFunction: string;
36 | '&::placeholder': {
37 | color: string;
38 | };
39 | };
40 | };
41 | '.uk-input-pin.uk-form-destructive': {
42 | '--focus-shadow-color': string;
43 | };
44 | '.uk-input-pin.uk-disabled input, .uk-input-pin input:disabled': {
45 | opacity: string;
46 | };
47 | '.uk-input-pin input:first-child': {
48 | borderRadius: string;
49 | };
50 | '.uk-input-pin input:last-child': {
51 | borderRadius: string;
52 | };
53 | '.uk-input-pin.uk-input-pin-separated': {
54 | gap: string;
55 | boxShadow: string;
56 | };
57 | '.uk-input-pin.uk-input-pin-separated input': {
58 | margin: string;
59 | borderRadius: string;
60 | boxShadow: string;
61 | };
62 | };
63 | export default _default;
64 |
--------------------------------------------------------------------------------
/dist/components/form/rte.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.tiptap p.is-editor-empty:first-child::before': {
3 | content: string;
4 | pointerEvents: string;
5 | cssFloat: string;
6 | height: string;
7 | color: string;
8 | };
9 | '.ProseMirror': {
10 | overflow: string;
11 | borderWidth: string;
12 | borderColor: string;
13 | backgroundColor: string;
14 | padding: string;
15 | color: string;
16 | };
17 | '.ProseMirror p:first-child': {
18 | marginTop: string;
19 | };
20 | '.ProseMirror p:last-child': {
21 | marginBottom: string;
22 | };
23 | '.ProseMirror-focused': {
24 | outlineWidth: string;
25 | outlineStyle: string;
26 | outlineOffset: string;
27 | boxShadow: string;
28 | transitionProperty: string;
29 | transitionDuration: string;
30 | transitionTimingFunction: string;
31 | };
32 | '.uk-rte': {
33 | boxShadow: string;
34 | borderRadius: string;
35 | };
36 | '.uk-rte-header': {
37 | borderTopLeftRadius: string;
38 | borderTopRightRadius: string;
39 | display: string;
40 | flexWrap: string;
41 | overflow: string;
42 | borderWidth: string;
43 | borderBottomWidth: string;
44 | borderColor: string;
45 | padding: string;
46 | };
47 | '.uk-rte-toolbar': {
48 | marginBottom: string;
49 | display: string;
50 | width: string;
51 | columnGap: string;
52 | overflowX: string;
53 | paddingBottom: string;
54 | };
55 | '.uk-rte-toolbar-group': {
56 | display: string;
57 | gap: string;
58 | };
59 | '.uk-rte-toolbar-group button.uk-active': {
60 | backgroundColor: string;
61 | color: string;
62 | };
63 | '.uk-rte-toolbar-group a': {
64 | cursor: string;
65 | };
66 | '.uk-rte-footer': {
67 | borderBottomRightRadius: string;
68 | borderBottomLeftRadius: string;
69 | borderWidth: string;
70 | borderTopWidth: string;
71 | borderColor: string;
72 | padding: string;
73 | fontSize: string;
74 | lineHeight: string;
75 | };
76 | '.uk-rte-link-close': {
77 | position: string;
78 | right: string;
79 | top: string;
80 | };
81 | };
82 | export default _default;
83 |
--------------------------------------------------------------------------------
/dist/components/form/rte.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.tiptap p.is-editor-empty:first-child::before': {
3 | content: 'attr(data-placeholder)',
4 | pointerEvents: 'none',
5 | cssFloat: 'left',
6 | height: '0px',
7 | color: 'hsl(var(--muted-foreground))'
8 | },
9 | '.ProseMirror': {
10 | overflow: 'auto',
11 | borderWidth: '1px',
12 | borderColor: 'hsl(var(--input))',
13 | backgroundColor: 'transparent',
14 | padding: '0.5rem',
15 | color: 'hsl(var(--foreground))'
16 | },
17 | '.ProseMirror p:first-child': { marginTop: '0px' },
18 | '.ProseMirror p:last-child': { marginBottom: '0px' },
19 | '.ProseMirror-focused': {
20 | outlineWidth: 'var(--uk-form-focus-outline-width, 0)',
21 | outlineStyle: 'var(--uk-form-focus-outline-style, none)',
22 | outlineOffset: 'var(--uk-form-focus-outline-offset, 0px)',
23 | boxShadow: 'var(--uk-form-focus-shadow, 0 0 0 0 transparent, 0 0 0 1px hsl(var(--ring)), 0 0 #0000)',
24 | transitionProperty: 'var(--uk-form-focus-transition-property, box-shadow)',
25 | transitionDuration: 'var(--uk-form-focus-transition-duration, 150ms)',
26 | transitionTimingFunction: 'var(--uk-form-focus-transition-timing, ease-in-out)'
27 | },
28 | '.uk-rte': {
29 | boxShadow: 'var(--uk-global-shadow)',
30 | borderRadius: 'var(--uk-global-radius)'
31 | },
32 | '.uk-rte-header': {
33 | borderTopLeftRadius: 'var(--uk-global-radius)',
34 | borderTopRightRadius: 'var(--uk-global-radius)',
35 | display: 'flex',
36 | flexWrap: 'nowrap',
37 | overflow: 'hidden',
38 | borderWidth: '1px',
39 | borderBottomWidth: '0px',
40 | borderColor: 'hsl(var(--border))',
41 | padding: '0.5rem'
42 | },
43 | '.uk-rte-toolbar': {
44 | marginBottom: '-2.5rem',
45 | display: 'flex',
46 | width: '100%',
47 | columnGap: '0.75rem',
48 | overflowX: 'scroll',
49 | paddingBottom: '2.5rem'
50 | },
51 | '.uk-rte-toolbar-group': { display: 'flex', gap: '0.25rem' },
52 | '.uk-rte-toolbar-group button.uk-active': {
53 | backgroundColor: 'hsl(var(--muted))',
54 | color: 'hsl(var(--muted-foreground))'
55 | },
56 | '.uk-rte-toolbar-group a': { cursor: 'pointer' },
57 | '.uk-rte-footer': {
58 | borderBottomRightRadius: 'var(--uk-global-radius)',
59 | borderBottomLeftRadius: 'var(--uk-global-radius)',
60 | borderWidth: '1px',
61 | borderTopWidth: '0px',
62 | borderColor: 'hsl(var(--border))',
63 | padding: '0.5rem',
64 | fontSize: '0.75rem',
65 | lineHeight: '1rem'
66 | },
67 | '.uk-rte-link-close': {
68 | position: 'absolute',
69 | right: '0.5rem',
70 | top: '0.5rem'
71 | }
72 | };
73 |
--------------------------------------------------------------------------------
/dist/components/form/tag.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-input-tag': {
3 | backgroundColor: string;
4 | display: string;
5 | minHeight: string;
6 | padding: string;
7 | gap: string;
8 | flexWrap: string;
9 | alignItems: string;
10 | boxShadow: string;
11 | borderRadius: string;
12 | borderWidth: string;
13 | borderStyle: string;
14 | borderColor: string;
15 | '--focus-shadow-color': string;
16 | '&:has(input:focus)': {
17 | outlineWidth: string;
18 | outlineStyle: string;
19 | outlineColor: string;
20 | outlineOffset: string;
21 | boxShadow: string;
22 | };
23 | };
24 | '.uk-input-tag.uk-disabled': {
25 | opacity: string;
26 | };
27 | '.uk-input-tag input': {
28 | backgroundColor: string;
29 | outline: string;
30 | minHeight: string;
31 | flex: string;
32 | padding: string;
33 | color: string;
34 | '&::placeholder': {
35 | color: string;
36 | };
37 | };
38 | '.uk-input-tag.uk-form-destructive': {
39 | '--focus-shadow-color': string;
40 | };
41 | };
42 | export default _default;
43 |
--------------------------------------------------------------------------------
/dist/components/form/tag.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-input-tag': {
3 | // Reset
4 | backgroundColor: 'transparent',
5 | // Layout
6 | display: 'var(--uk-input-tag-display, flex)',
7 | minHeight: 'var(--uk-input-tag-min-height, 2.5rem)',
8 | padding: 'var(--uk-input-tag-padding, 0.5rem)',
9 | gap: 'var(--uk-input-tag-gap, 0.25rem)',
10 | flexWrap: 'var(--uk-input-tag-wrap, wrap)',
11 | alignItems: 'var(--uk-input-tag-align, center)',
12 | // Visual
13 | boxShadow: 'var(--uk-input-tag-shadow, var(--uk-form-input-shadow))',
14 | borderRadius: 'var(--uk-input-tag-radius, var(--uk-form-input-radius))',
15 | borderWidth: 'var(--uk-input-tag-border-width, 1px)',
16 | borderStyle: 'var(--uk-input-tag-border-style, solid)',
17 | borderColor: 'var(--uk-input-tag-border-color, hsl(var(--input)))',
18 | // Theme
19 | '--focus-shadow-color': 'hsl(var(--ring))',
20 | // Focus state
21 | '&:has(input:focus)': {
22 | outlineWidth: 'var(--uk-input-tag-focus-outline-width, 2px)',
23 | outlineStyle: 'var(--uk-input-tag-focus-outline-style, solid)',
24 | outlineColor: 'var(--uk-input-tag-focus-outline-color, transparent)',
25 | outlineOffset: 'var(--uk-input-tag-focus-outline-offset, 2px)',
26 | boxShadow: 'var(--uk-input-tag-focus-shadow, 0 0 0 0 transparent, 0 0 0 1px var(--focus-shadow-color), 0 0 #0000)'
27 | }
28 | },
29 | '.uk-input-tag.uk-disabled': {
30 | opacity: 'var(--uk-input-tag-disabled-opacity, 0.5)'
31 | },
32 | '.uk-input-tag input': {
33 | // Reset
34 | backgroundColor: 'transparent',
35 | outline: 'none',
36 | // Layout
37 | minHeight: 'var(--uk-input-tag-input-min-height, 1.75rem)',
38 | flex: 'var(--uk-input-tag-input-flex, 1)',
39 | padding: 'var(--uk-input-tag-input-padding, 0 0.25rem)',
40 | // Typography
41 | color: 'var(--uk-input-tag-input-color, hsl(var(--foreground)))',
42 | '&::placeholder': {
43 | color: 'var(--uk-input-tag-placeholder-color, hsl(var(--muted-foreground)))'
44 | }
45 | },
46 | '.uk-input-tag.uk-form-destructive': {
47 | '--focus-shadow-color': 'hsl(var(--destructive))'
48 | }
49 | };
50 |
--------------------------------------------------------------------------------
/dist/components/icon.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-icon': {
3 | display: string;
4 | color: string;
5 | fill: string;
6 | };
7 | 'button.uk-icon:not(:disabled)': {
8 | cursor: string;
9 | };
10 | '.uk-icon::-moz-focus-inner': {
11 | border: string;
12 | padding: string;
13 | };
14 | ".uk-icon:not(.uk-preserve) [fill*='#']:not(.uk-preserve)": {
15 | fill: string;
16 | };
17 | ".uk-icon:not(.uk-preserve) [stroke*='#']:not(.uk-preserve)": {
18 | stroke: string;
19 | };
20 | '.uk-icon > *': {
21 | transform: string;
22 | };
23 | '.uk-icon-image': {
24 | width: string;
25 | height: string;
26 | backgroundPosition: string;
27 | backgroundRepeat: string;
28 | backgroundSize: string;
29 | verticalAlign: string;
30 | objectFit: string;
31 | maxWidth: string;
32 | };
33 | };
34 | export default _default;
35 |
--------------------------------------------------------------------------------
/dist/components/icon.js:
--------------------------------------------------------------------------------
1 | export default {
2 | // Base icon styles
3 | '.uk-icon': {
4 | display: 'inline-flex', // Removed variable - fundamental layout
5 | color: 'var(--uk-icon-color, inherit)',
6 | fill: 'var(--uk-icon-fill, currentcolor)'
7 | },
8 | // Button behavior
9 | 'button.uk-icon:not(:disabled)': {
10 | cursor: 'pointer' // Removed variable - fundamental button behavior
11 | },
12 | // Browser reset - keep static vendor prefix rule as is
13 | '.uk-icon::-moz-focus-inner': {
14 | border: '0',
15 | padding: '0'
16 | },
17 | // SVG fill and stroke handling
18 | ".uk-icon:not(.uk-preserve) [fill*='#']:not(.uk-preserve)": {
19 | fill: 'var(--uk-icon-fill-color, currentcolor)'
20 | },
21 | ".uk-icon:not(.uk-preserve) [stroke*='#']:not(.uk-preserve)": {
22 | stroke: 'var(--uk-icon-stroke-color, currentcolor)'
23 | },
24 | // Icon positioning
25 | '.uk-icon > *': {
26 | transform: 'var(--uk-icon-transform, translate(0, 0))'
27 | },
28 | // Image icons
29 | '.uk-icon-image': {
30 | // Dimensions
31 | width: 'var(--uk-icon-image-size, 1.25rem)',
32 | height: 'var(--uk-icon-image-size, 1.25rem)', // Using same variable for consistent sizing
33 | // Keep static properties that don't need customization
34 | backgroundPosition: '50% 50%',
35 | backgroundRepeat: 'no-repeat',
36 | backgroundSize: 'contain',
37 | verticalAlign: 'middle',
38 | objectFit: 'scale-down',
39 | maxWidth: 'none'
40 | }
41 | };
42 |
--------------------------------------------------------------------------------
/dist/components/label.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-label': {
3 | display: string;
4 | alignItems: string;
5 | padding: string;
6 | fontSize: string;
7 | lineHeight: string;
8 | fontWeight: string;
9 | borderRadius: string;
10 | boxShadow: string;
11 | border: string;
12 | backgroundColor: string;
13 | color: string;
14 | };
15 | '.uk-label:hover': {
16 | transitionProperty: string;
17 | transitionDuration: string;
18 | transitionTimingFunction: string;
19 | opacity: string;
20 | };
21 | '.uk-label-primary': {
22 | '--uk-label-border': string;
23 | '--uk-label-bg': string;
24 | '--uk-label-color': string;
25 | };
26 | '.uk-label-secondary': {
27 | '--uk-label-border': string;
28 | '--uk-label-bg': string;
29 | '--uk-label-color': string;
30 | };
31 | '.uk-label-destructive': {
32 | '--uk-label-border': string;
33 | '--uk-label-bg': string;
34 | '--uk-label-color': string;
35 | };
36 | };
37 | export default _default;
38 |
--------------------------------------------------------------------------------
/dist/components/label.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-label': {
3 | // Layout
4 | display: 'inline-flex', // Removed variable - fundamental layout
5 | alignItems: 'center', // Removed variable - fundamental layout
6 | padding: 'var(--uk-label-padding, 0.125rem 0.625rem)',
7 | // Typography
8 | fontSize: 'var(--uk-label-font-size, var(--uk-global-font-size-s))',
9 | lineHeight: 'var(--uk-label-leading, var(--uk-global-leading-s))',
10 | fontWeight: 'var(--uk-label-font-weight, 600)',
11 | // Visual
12 | borderRadius: 'var(--uk-label-radius, var(--uk-global-radius))',
13 | boxShadow: 'var(--uk-label-shadow, var(--uk-global-shadow))',
14 | border: 'var(--uk-label-border, 1px solid hsl(var(--border)))',
15 | backgroundColor: 'var(--uk-label-bg, transparent)',
16 | color: 'var(--uk-label-color, hsl(var(--foreground)))'
17 | },
18 | '.uk-label:hover': {
19 | transitionProperty: 'background-color', // Removed variable - fundamental transition
20 | transitionDuration: 'var(--uk-label-hover-duration, 150ms)',
21 | transitionTimingFunction: 'ease-in-out', // Removed variable - fundamental timing
22 | opacity: 'var(--uk-label-hover-opacity, 0.8)'
23 | },
24 | // Variants using CSS variable reassignment pattern
25 | '.uk-label-primary': {
26 | '--uk-label-border': '1px solid hsl(var(--primary))',
27 | '--uk-label-bg': 'hsl(var(--primary))',
28 | '--uk-label-color': 'hsl(var(--primary-foreground))'
29 | },
30 | '.uk-label-secondary': {
31 | '--uk-label-border': '1px solid hsl(var(--secondary))',
32 | '--uk-label-bg': 'hsl(var(--secondary))',
33 | '--uk-label-color': 'hsl(var(--secondary-foreground))'
34 | },
35 | '.uk-label-destructive': {
36 | '--uk-label-border': '1px solid hsl(var(--destructive))',
37 | '--uk-label-bg': 'hsl(var(--destructive))',
38 | '--uk-label-color': 'hsl(var(--destructive-foreground))'
39 | }
40 | };
41 |
--------------------------------------------------------------------------------
/dist/components/leader.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-leader': {
3 | overflow: string;
4 | };
5 | '.uk-leader-fill::after': {
6 | display: string;
7 | marginLeft: string;
8 | width: string;
9 | content: string;
10 | whiteSpace: string;
11 | };
12 | '.uk-leader-fill.uk-leader-hide::after': {
13 | display: string;
14 | };
15 | };
16 | export default _default;
17 |
--------------------------------------------------------------------------------
/dist/components/leader.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-leader': {
3 | overflow: 'hidden' // Fundamental - required for text truncation
4 | },
5 | '.uk-leader-fill::after': {
6 | // Layout
7 | display: 'inline-block', // Fundamental - required for content placement
8 | marginLeft: 'var(--uk-leader-spacing, 1rem)', // Keep as variable for spacing customization
9 | width: '0', // Fundamental - required for dynamic filling
10 | // Content
11 | content: 'attr(data-fill)', // Fundamental - required for leader dots
12 | whiteSpace: 'nowrap' // Fundamental - required for proper filling
13 | },
14 | '.uk-leader-fill.uk-leader-hide::after': {
15 | display: 'none' // Fundamental - required for hiding behavior
16 | }
17 | };
18 |
--------------------------------------------------------------------------------
/dist/components/lightbox.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-lightbox': {
3 | display: string;
4 | position: string;
5 | top: string;
6 | right: string;
7 | bottom: string;
8 | left: string;
9 | zIndex: string;
10 | opacity: string;
11 | transition: string;
12 | touchAction: string;
13 | background: string;
14 | };
15 | '.uk-lightbox.uk-open': {
16 | display: string;
17 | opacity: string;
18 | };
19 | '.uk-lightbox-page': {
20 | overflow: string;
21 | };
22 | '.uk-lightbox-items > *': {
23 | position: string;
24 | top: string;
25 | right: string;
26 | bottom: string;
27 | left: string;
28 | display: string;
29 | justifyContent: string;
30 | alignItems: string;
31 | willChange: string;
32 | overflow: string;
33 | };
34 | '.uk-lightbox-items > .uk-active': {
35 | display: string;
36 | };
37 | '.uk-lightbox-items-fit > *': {
38 | alignItems: string;
39 | };
40 | '.uk-lightbox-items-fit > * > *': {
41 | maxWidth: string;
42 | maxHeight: string;
43 | };
44 | '.uk-lightbox-items-fit > * > :not(iframe)': {
45 | width: string;
46 | height: string;
47 | };
48 | '.uk-lightbox-items.uk-lightbox-items-fit .uk-lightbox-zoom:hover': {
49 | cursor: string;
50 | };
51 | '.uk-lightbox-items:not(.uk-lightbox-items-fit) .uk-lightbox-zoom:hover': {
52 | cursor: string;
53 | };
54 | '.uk-lightbox-thumbnav-vertical :where(img, video)': {
55 | maxWidth: string;
56 | };
57 | '.uk-lightbox-thumbnav:not(.uk-lightbox-thumbnav-vertical) :where(img, video)': {
58 | maxHeight: string;
59 | };
60 | '.uk-lightbox-thumbnav:empty, .uk-lightbox-dotnav:empty': {
61 | display: string;
62 | };
63 | '.uk-lightbox-caption': {
64 | backgroundColor: string;
65 | padding: string;
66 | color: string;
67 | };
68 | '.uk-lightbox-caption:empty': {
69 | display: string;
70 | };
71 | '.uk-lightbox-iframe': {
72 | width: string;
73 | height: string;
74 | };
75 | };
76 | export default _default;
77 |
--------------------------------------------------------------------------------
/dist/components/link.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | 'a.uk-link-muted, .uk-link-muted a, .uk-link-toggle .uk-link-muted': {
3 | fontWeight: string;
4 | color: string;
5 | textDecorationLine: string;
6 | textUnderlineOffset: string;
7 | };
8 | 'a.uk-link-text:hover, .uk-link-text a:hover, .uk-link-toggle:hover .uk-link-text': {
9 | textDecorationLine: string;
10 | textUnderlineOffset: string;
11 | };
12 | 'a.uk-link-reset, .uk-link-reset a': {
13 | textDecoration: string;
14 | fontWeight: string;
15 | };
16 | '.uk-link-toggle': {
17 | textDecoration: string;
18 | };
19 | '.uk-link': {
20 | fontWeight: string;
21 | textDecorationLine: string;
22 | textUnderlineOffset: string;
23 | };
24 | };
25 | export default _default;
26 |
--------------------------------------------------------------------------------
/dist/components/link.js:
--------------------------------------------------------------------------------
1 | export default {
2 | // Muted variant
3 | 'a.uk-link-muted, .uk-link-muted a, .uk-link-toggle .uk-link-muted': {
4 | fontWeight: 'var(--uk-link-muted-font-weight, 500)',
5 | color: 'var(--uk-link-muted-color, hsl(var(--muted-foreground)))',
6 | textDecorationLine: 'underline', // Fundamental link behavior
7 | textUnderlineOffset: 'var(--uk-link-underline-offset, 4px)'
8 | },
9 | // Text variant hover state
10 | 'a.uk-link-text:hover, .uk-link-text a:hover, .uk-link-toggle:hover .uk-link-text': {
11 | textDecorationLine: 'underline', // Fundamental link behavior
12 | textUnderlineOffset: 'var(--uk-link-underline-offset, 4px)'
13 | },
14 | // Reset variant (no variables needed - purpose is to reset)
15 | 'a.uk-link-reset, .uk-link-reset a': {
16 | textDecoration: 'none !important', // Fundamental reset
17 | fontWeight: '400 !important' // Fundamental reset
18 | },
19 | // Toggle variant (no variables needed - functional class)
20 | '.uk-link-toggle': {
21 | textDecoration: 'none !important' // Fundamental behavior
22 | },
23 | // Base link style
24 | '.uk-link': {
25 | fontWeight: 'var(--uk-link-font-weight, 500)',
26 | textDecorationLine: 'underline', // Fundamental link behavior
27 | textUnderlineOffset: 'var(--uk-link-underline-offset, 4px)'
28 | }
29 | };
30 |
--------------------------------------------------------------------------------
/dist/components/list.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-list > *': {
3 | MozColumnBreakInside: string;
4 | breakInside: string;
5 | };
6 | '.uk-list > * > :last-child': {
7 | marginBottom: string;
8 | };
9 | '.uk-list > :nth-child(n+2), .uk-list > * > ul': {
10 | marginTop: string;
11 | };
12 | '.uk-list-disc, .uk-list-circle, .uk-list-square, .uk-list-decimal, .uk-list-hyphen': {
13 | paddingLeft: string;
14 | };
15 | '.uk-list-disc': {
16 | listStyleType: string;
17 | };
18 | '.uk-list-circle': {
19 | listStyleType: string;
20 | };
21 | '.uk-list-square': {
22 | listStyleType: string;
23 | };
24 | '.uk-list-decimal': {
25 | listStyleType: string;
26 | };
27 | '.uk-list-hyphen': {
28 | listStyleType: string;
29 | };
30 | '.uk-list-muted > ::marker': {
31 | color: string;
32 | };
33 | '.uk-list-primary > ::marker': {
34 | color: string;
35 | };
36 | '.uk-list-secondary > ::marker': {
37 | color: string;
38 | };
39 | '.uk-list-bullet > *': {
40 | position: string;
41 | paddingLeft: string;
42 | };
43 | '.uk-list-bullet > ::before': {
44 | content: string;
45 | position: string;
46 | top: string;
47 | left: string;
48 | width: string;
49 | height: string;
50 | backgroundImage: string;
51 | backgroundRepeat: string;
52 | backgroundPosition: string;
53 | };
54 | '.uk-list-divider > :nth-child(n+2)': {
55 | marginTop: string;
56 | borderTopWidth: string;
57 | borderColor: string;
58 | paddingTop: string;
59 | };
60 | '.uk-list-striped > *': {
61 | padding: string;
62 | };
63 | '.uk-list-striped > *:nth-of-type(odd)': {
64 | borderTopWidth: string;
65 | borderBottomWidth: string;
66 | borderColor: string;
67 | };
68 | '.uk-list-striped > :nth-of-type(odd)': {
69 | backgroundColor: string;
70 | };
71 | '.uk-list-striped > :nth-child(n+2)': {
72 | marginTop: string;
73 | };
74 | };
75 | export default _default;
76 |
--------------------------------------------------------------------------------
/dist/components/list.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-list > *': {
3 | MozColumnBreakInside: 'avoid',
4 | breakInside: 'avoid-column'
5 | },
6 | '.uk-list > * > :last-child': { marginBottom: '0' },
7 | '.uk-list > :nth-child(n+2), .uk-list > * > ul': {
8 | marginTop: 'var(--uk-list-item-margin-top, 0.5rem)'
9 | },
10 | '.uk-list-disc, .uk-list-circle, .uk-list-square, .uk-list-decimal, .uk-list-hyphen': {
11 | paddingLeft: 'var(--uk-list-indent, 32px)'
12 | },
13 | '.uk-list-disc': { listStyleType: 'disc' },
14 | '.uk-list-circle': { listStyleType: 'circle' },
15 | '.uk-list-square': { listStyleType: 'square' },
16 | '.uk-list-decimal': { listStyleType: 'decimal' },
17 | '.uk-list-hyphen': { listStyleType: "'– '" },
18 | '.uk-list-muted > ::marker': {
19 | color: 'var(--uk-list-marker-muted-color, hsl(var(--muted-foreground)))'
20 | },
21 | '.uk-list-primary > ::marker': {
22 | color: 'var(--uk-list-marker-primary-color, hsl(var(--primary)))'
23 | },
24 | '.uk-list-secondary > ::marker': {
25 | color: 'var(--uk-list-marker-secondary-color, hsl(var(--secondary-foreground)))'
26 | },
27 | '.uk-list-bullet > *': {
28 | position: 'relative',
29 | paddingLeft: 'var(--uk-list-bullet-indent, 32px)'
30 | },
31 | '.uk-list-bullet > ::before': {
32 | content: '""',
33 | position: 'absolute',
34 | top: '0',
35 | left: '0',
36 | width: 'var(--uk-list-bullet-width, 32px)',
37 | height: 'var(--uk-list-bullet-height, 1.5em)',
38 | backgroundImage: 'var(--uk-list-bullet-image)',
39 | backgroundRepeat: 'no-repeat',
40 | backgroundPosition: '50% 50%'
41 | },
42 | '.uk-list-divider > :nth-child(n+2)': {
43 | marginTop: 'var(--uk-list-divider-item-margin-top, 0.5rem)',
44 | borderTopWidth: 'var(--uk-list-divider-border-width, 1px)',
45 | borderColor: 'var(--uk-list-divider-border-color, hsl(var(--border)))',
46 | paddingTop: 'var(--uk-list-divider-item-padding-top, 0.5rem)'
47 | },
48 | '.uk-list-striped > *': { padding: 'var(--uk-list-striped-item-padding, 0.5rem)' },
49 | '.uk-list-striped > *:nth-of-type(odd)': {
50 | borderTopWidth: 'var(--uk-list-striped-border-width, 1px)', // Shorthand variable
51 | borderBottomWidth: 'var(--uk-list-striped-border-width, 1px)', // Shorthand variable
52 | borderColor: 'var(--uk-list-striped-border-color, hsl(var(--border)))'
53 | },
54 | '.uk-list-striped > :nth-of-type(odd)': {
55 | backgroundColor: 'var(--uk-list-striped-background-color, hsl(var(--muted) / 0.5))'
56 | },
57 | '.uk-list-striped > :nth-child(n+2)': { marginTop: '0' }
58 | };
59 |
--------------------------------------------------------------------------------
/dist/components/modal.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-modal': {
3 | display: string;
4 | position: string;
5 | top: string;
6 | right: string;
7 | bottom: string;
8 | left: string;
9 | zIndex: string;
10 | overflowY: string;
11 | backgroundColor: string;
12 | opacity: string;
13 | transition: string;
14 | padding: string;
15 | WebkitBackdropFilter: string;
16 | backdropFilter: string;
17 | };
18 | '.uk-modal.uk-open': {
19 | opacity: string;
20 | };
21 | '.uk-modal-page': {
22 | overflow: string;
23 | };
24 | '.uk-modal-dialog': {
25 | position: string;
26 | boxSizing: string;
27 | margin: string;
28 | width: string;
29 | maxWidth: string;
30 | opacity: string;
31 | transform: string;
32 | transition: string;
33 | transitionProperty: string;
34 | borderRadius: string;
35 | overflow: string;
36 | borderWidth: string;
37 | borderStyle: string;
38 | borderColor: string;
39 | backgroundColor: string;
40 | };
41 | '.uk-open > .uk-modal-dialog': {
42 | opacity: string;
43 | transform: string;
44 | };
45 | '.uk-modal-container .uk-modal-dialog': {
46 | width: string;
47 | };
48 | '.uk-modal-full': {
49 | padding: string;
50 | background: string;
51 | };
52 | '.uk-modal-full .uk-modal-dialog': {
53 | margin: string;
54 | maxWidth: string;
55 | transform: string;
56 | width: string;
57 | borderRadius: string;
58 | borderStyle: string;
59 | };
60 | '.uk-modal-body': {
61 | display: string;
62 | padding: string;
63 | };
64 | '.uk-modal-header': {
65 | display: string;
66 | padding: string;
67 | };
68 | '.uk-modal-footer': {
69 | display: string;
70 | padding: string;
71 | };
72 | '.uk-modal-body > :last-child, .uk-modal-header > :last-child, .uk-modal-footer > :last-child': {
73 | marginBottom: string;
74 | };
75 | '.uk-modal-title': {
76 | fontSize: string;
77 | fontWeight: string;
78 | lineHeight: string;
79 | letterSpacing: string;
80 | };
81 | '.uk-modal-header + .uk-modal-body, .uk-modal-body + .uk-modal-footer': {
82 | paddingTop: string;
83 | };
84 | '.uk-modal-header ~ .uk-modal-footer': {
85 | paddingTop: string;
86 | };
87 | '.uk-modal-header + .uk-modal-body.uk-overflow-auto': {
88 | paddingBottom: string;
89 | };
90 | '.uk-modal-body.uk-overflow-auto + .uk-modal-footer': {
91 | paddingTop: string;
92 | };
93 | };
94 | export default _default;
95 |
--------------------------------------------------------------------------------
/dist/components/notification.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-notification': {
3 | position: string;
4 | top: string;
5 | left: string;
6 | zIndex: string;
7 | boxSizing: string;
8 | width: string;
9 | };
10 | '.uk-notification-top-right, .uk-notification-bottom-right': {
11 | left: string;
12 | right: string;
13 | };
14 | '.uk-notification-top-center, .uk-notification-bottom-center': {
15 | left: string;
16 | marginLeft: string;
17 | };
18 | '.uk-notification-bottom-left, .uk-notification-bottom-right, .uk-notification-bottom-center': {
19 | top: string;
20 | bottom: string;
21 | };
22 | '.uk-notification-message': {
23 | position: string;
24 | cursor: string;
25 | borderRadius: string;
26 | boxShadow: string;
27 | border: string;
28 | backgroundColor: string;
29 | padding: string;
30 | color: string;
31 | };
32 | '* + .uk-notification-message': {
33 | marginTop: string;
34 | };
35 | '.uk-notification-close': {
36 | display: string;
37 | position: string;
38 | right: string;
39 | top: string;
40 | padding: string;
41 | color: string;
42 | };
43 | '.uk-notification-message:hover .uk-notification-close': {
44 | display: string;
45 | };
46 | '.uk-notification-message-primary': {
47 | '--uk-notification-border': string;
48 | '--uk-notification-bg': string;
49 | '--uk-notification-color': string;
50 | '--uk-notification-close-color': string;
51 | };
52 | '.uk-notification-message-secondary': {
53 | '--uk-notification-border': string;
54 | '--uk-notification-bg': string;
55 | '--uk-notification-color': string;
56 | '--uk-notification-close-color': string;
57 | };
58 | '.uk-notification-message-destructive': {
59 | '--uk-notification-border': string;
60 | '--uk-notification-bg': string;
61 | '--uk-notification-color': string;
62 | '--uk-notification-close-color': string;
63 | };
64 | };
65 | export default _default;
66 |
--------------------------------------------------------------------------------
/dist/components/placeholder.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-placeholder': {
3 | marginBottom: string;
4 | padding: string;
5 | background: string;
6 | border: string;
7 | borderColor: string;
8 | };
9 | '.uk-placeholder > :last-child': {
10 | marginBottom: string;
11 | };
12 | };
13 | export default _default;
14 |
--------------------------------------------------------------------------------
/dist/components/placeholder.js:
--------------------------------------------------------------------------------
1 | export default {
2 | // Placeholder
3 | '.uk-placeholder': {
4 | marginBottom: 'var(--uk-placeholder-margin-bottom, 1.25rem)',
5 | padding: 'var(--uk-placeholder-padding, 2rem 2rem)',
6 | background: 'var(--uk-placeholder-background, transparent)',
7 | border: 'var(--uk-placeholder-border, 1px dashed)', // Shorthand variable for border
8 | borderColor: 'var(--uk-placeholder-border-color, hsl(var(--border)))' // borderColor is already using a variable, encapsulate it too for component level customization
9 | },
10 | '.uk-placeholder > :last-child': {
11 | marginBottom: '0' // obvious value, keep static
12 | }
13 | };
14 |
--------------------------------------------------------------------------------
/dist/components/print.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '@media print': {
3 | '*,*::before,*::after': {
4 | background: string;
5 | color: string;
6 | boxShadow: string;
7 | textShadow: string;
8 | };
9 | 'a,a:visited': {
10 | textDecoration: string;
11 | };
12 | 'pre,blockquote': {
13 | border: string;
14 | pageBreakInside: string;
15 | };
16 | thead: {
17 | display: string;
18 | };
19 | 'tr,img': {
20 | pageBreakInside: string;
21 | };
22 | img: {
23 | maxWidth: string;
24 | };
25 | '@page': {
26 | margin: string;
27 | };
28 | 'p,h2,h3': {
29 | orphans: string;
30 | widows: string;
31 | };
32 | 'h2,h3': {
33 | pageBreakAfter: string;
34 | };
35 | };
36 | };
37 | export default _default;
38 |
--------------------------------------------------------------------------------
/dist/components/print.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '@media print': {
3 | '*,*::before,*::after': {
4 | background: 'transparent !important',
5 | color: 'black !important',
6 | boxShadow: 'none !important',
7 | textShadow: 'none !important'
8 | },
9 | 'a,a:visited': {
10 | textDecoration: 'underline'
11 | },
12 | 'pre,blockquote': {
13 | border: '1px solid #999',
14 | pageBreakInside: 'avoid'
15 | },
16 | thead: {
17 | display: 'table-header-group'
18 | },
19 | 'tr,img': {
20 | pageBreakInside: 'avoid'
21 | },
22 | img: {
23 | maxWidth: '100% !important'
24 | },
25 | '@page': {
26 | margin: '0.5cm'
27 | },
28 | 'p,h2,h3': {
29 | orphans: '3',
30 | widows: '3'
31 | },
32 | 'h2,h3': {
33 | pageBreakAfter: 'avoid'
34 | }
35 | }
36 | };
37 |
--------------------------------------------------------------------------------
/dist/components/progress.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-progress': {
3 | verticalAlign: string;
4 | display: string;
5 | width: string;
6 | border: string;
7 | marginBottom: string;
8 | height: string;
9 | borderRadius: string;
10 | overflow: string;
11 | backgroundColor: string;
12 | };
13 | '.uk-progress::-webkit-progress-bar': {
14 | backgroundColor: string;
15 | };
16 | '.uk-progress::-webkit-progress-value': {
17 | transition: string;
18 | backgroundColor: string;
19 | };
20 | '.uk-progress::-moz-progress-bar': {
21 | transition: string;
22 | backgroundColor: string;
23 | };
24 | };
25 | export default _default;
26 |
--------------------------------------------------------------------------------
/dist/components/progress.js:
--------------------------------------------------------------------------------
1 | export default {
2 | // Progress
3 | '.uk-progress': {
4 | verticalAlign: 'baseline', // obvious value
5 | display: 'block', // obvious value
6 | width: '100%', // obvious value
7 | border: '0', // obvious value
8 | marginBottom: 'var(--uk-progress-margin-bottom, 1.25rem)',
9 | height: 'var(--uk-progress-height, 1rem)',
10 | borderRadius: 'var(--uk-progress-radius, 500px)',
11 | overflow: 'hidden', // obvious value
12 | backgroundColor: 'var(--uk-progress-track-color, hsl(var(--primary) / 0.2))' // Renamed for clarity - track color
13 | },
14 | '.uk-progress::-webkit-progress-bar': {
15 | backgroundColor: 'transparent' // browser specific, obvious value
16 | },
17 | '.uk-progress::-webkit-progress-value': {
18 | transition: 'var(--uk-progress-transition, width 0.6s ease)', // Shorthand variable for transition
19 | backgroundColor: 'var(--uk-progress-value-color, hsl(var(--primary)))' // Renamed for clarity - value color
20 | },
21 | '.uk-progress::-moz-progress-bar': {
22 | transition: 'var(--uk-progress-transition, width 0.6s ease)', // Reusing the same variable for consistency
23 | backgroundColor: 'var(--uk-progress-value-color, hsl(var(--primary)))' // Reusing the same variable for consistency
24 | }
25 | };
26 |
--------------------------------------------------------------------------------
/dist/components/root.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | ':root': {
3 | '--chart-1': string;
4 | '--chart-2': string;
5 | '--chart-3': string;
6 | '--chart-4': string;
7 | '--chart-5': string;
8 | '--uk-breakpoint-s': string;
9 | '--uk-breakpoint-m': string;
10 | '--uk-breakpoint-l': string;
11 | '--uk-breakpoint-xl': string;
12 | '--uk-global-blur': string;
13 | '--uk-global-font-size': string;
14 | '--uk-global-leading': string;
15 | '--uk-global-font-size-s': string;
16 | '--uk-global-leading-s': string;
17 | '--uk-global-radius-s': string;
18 | '--uk-global-radius': string;
19 | '--uk-global-shadow-s': string;
20 | '--uk-global-shadow': string;
21 | '--uk-btn-font-size': string;
22 | '--uk-btn-leading': string;
23 | '--uk-btn-padding': string;
24 | '--uk-btn-height': string;
25 | '--uk-btn-radius': string;
26 | '--uk-btn-shadow': string;
27 | '--uk-cal-cell-size': string;
28 | '--uk-cal-cell-radius': string;
29 | '--uk-cal-cell-header-font-size': string;
30 | '--uk-cal-cell-body-font-size': string;
31 | '--uk-datepicker-spacing': string;
32 | '--uk-form-input-radius': string;
33 | '--uk-form-input-shadow': string;
34 | '--uk-form-input-height': string;
35 | '--uk-form-input-font-size': string;
36 | '--uk-form-input-leading': string;
37 | '--uk-form-input-padding': string;
38 | '--uk-form-list-image-position': string;
39 | '--uk-form-toggle-switch-shadow': string;
40 | '--uk-form-radio-radius': string;
41 | '--uk-form-radio-shadow': string;
42 | '--uk-leader-fill-content': string;
43 | '--uk-modal-padding': string;
44 | '--uk-modal-padding-header': string;
45 | '--uk-modal-padding-body': string;
46 | '--uk-modal-padding-footer': string;
47 | '--uk-modal-padding-top-between': string;
48 | '--uk-modal-padding-top-after-header': string;
49 | '--uk-modal-padding-bottom-scrollable': string;
50 | '--uk-modal-padding-top-after-scrollable': string;
51 | '--uk-modal-radius': string;
52 | '--uk-modal-overlay-blur': string;
53 | '--uk-offcanvas-bar-width': string;
54 | '--uk-offcanvas-bar-width-i': string;
55 | '--uk-offcanvas-overlay-blur': string;
56 | '--uk-nav-item-padding': string;
57 | '--uk-nav-item-margin': string;
58 | '--uk-nav-sub-item-padding': string;
59 | '--uk-nav-sub-item-margin': string;
60 | '--uk-nav-sub-width': string;
61 | '--uk-position-margin-offset': string;
62 | };
63 | '.dark': {
64 | '--chart-1': string;
65 | '--chart-5': string;
66 | '--chart-3': string;
67 | '--chart-4': string;
68 | '--chart-2': string;
69 | };
70 | };
71 | export default _default;
72 |
--------------------------------------------------------------------------------
/dist/components/slider.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-slider': {
3 | WebkitTapHighlightColor: string;
4 | };
5 | '.uk-slider-container': {
6 | overflow: string[];
7 | };
8 | '.uk-slider-items': {
9 | display: string;
10 | willChange: string;
11 | position: string;
12 | touchAction: string;
13 | };
14 | '.uk-slider-items > *': {
15 | flex: string;
16 | boxSizing: string;
17 | maxWidth: string;
18 | position: string;
19 | };
20 | '.uk-slidenav': {
21 | boxShadow: string;
22 | display: string;
23 | height: string;
24 | width: string;
25 | alignItems: string;
26 | justifyContent: string;
27 | borderRadius: string;
28 | borderWidth: string;
29 | borderColor: string;
30 | backgroundColor: string;
31 | };
32 | '.uk-slidenav:hover': {
33 | backgroundColor: string;
34 | color: string;
35 | };
36 | '.uk-slidenav:active': {
37 | backgroundColor: string;
38 | color: string;
39 | };
40 | '.uk-slidenav-lg': {
41 | padding: string;
42 | };
43 | '.uk-slidenav-container': {
44 | display: string;
45 | };
46 | '.uk-slidenav svg': {
47 | height: string;
48 | width: string;
49 | };
50 | '.uk-slideshow': {
51 | WebkitTapHighlightColor: string;
52 | };
53 | '.uk-slideshow-items': {
54 | position: string;
55 | zIndex: string;
56 | margin: string;
57 | padding: string;
58 | listStyle: string;
59 | overflow: string;
60 | WebkitTouchCallout: string;
61 | touchAction: string;
62 | };
63 | '.uk-slideshow-items > *': {
64 | position: string;
65 | top: string;
66 | left: string;
67 | right: string;
68 | bottom: string;
69 | overflow: string;
70 | willChange: string;
71 | };
72 | '.uk-slideshow-items > :not(.uk-active)': {
73 | display: string;
74 | };
75 | };
76 | export default _default;
77 |
--------------------------------------------------------------------------------
/dist/components/sortable.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-sortable': {
3 | position: string;
4 | };
5 | '.uk-sortable > :last-child': {
6 | marginBottom: string;
7 | };
8 | '.uk-sortable-drag': {
9 | position: string;
10 | zIndex: string;
11 | pointerEvents: string;
12 | };
13 | '.uk-sortable-placeholder': {
14 | opacity: string;
15 | pointerEvents: string;
16 | };
17 | '.uk-sortable-empty': {
18 | minHeight: string;
19 | };
20 | '.uk-sortable-handle:hover': {
21 | cursor: string;
22 | };
23 | };
24 | export default _default;
25 |
--------------------------------------------------------------------------------
/dist/components/sortable.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-sortable': {
3 | position: 'relative' // obvious value, required for positioning sortable items
4 | },
5 | '.uk-sortable > :last-child': {
6 | marginBottom: '0' // obvious value, remove bottom margin from last child
7 | },
8 | '.uk-sortable-drag': {
9 | position: 'fixed !important', // important for dragging functionality, obvious value
10 | zIndex: 'var(--uk-sortable-drag-z-index, 1050) !important', // Customizable z-index, important for stacking above other elements
11 | pointerEvents: 'none' // obvious value, prevent interaction with dragged element
12 | },
13 | '.uk-sortable-placeholder': {
14 | opacity: 'var(--uk-sortable-placeholder-opacity, 0)', // Customizable placeholder opacity, default to fully transparent
15 | pointerEvents: 'none' // obvious value, placeholder should not be interactive
16 | },
17 | '.uk-sortable-empty': {
18 | minHeight: 'var(--uk-sortable-empty-min-height, 3.5rem)' // Customizable minimum height for empty sortable area
19 | },
20 | '.uk-sortable-handle:hover': {
21 | cursor: 'var(--uk-sortable-handle-hover-cursor, move)' // Customizable cursor on handle hover, default to 'move'
22 | }
23 | };
24 |
--------------------------------------------------------------------------------
/dist/components/spinner.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-spinner > *': {
3 | animation: string;
4 | };
5 | '@keyframes uk-spinner-rotate': {
6 | '0%': {
7 | transform: string;
8 | };
9 | '100%': {
10 | transform: string;
11 | };
12 | };
13 | '.uk-spinner > * > *': {
14 | strokeDasharray: string;
15 | strokeDashoffset: string;
16 | transformOrigin: string;
17 | animation: string;
18 | strokeWidth: string;
19 | strokeLinecap: string;
20 | };
21 | '@keyframes uk-spinner-dash': {
22 | '0%': {
23 | strokeDashoffset: string;
24 | };
25 | '50%': {
26 | strokeDashoffset: string;
27 | transform: string;
28 | };
29 | '100%': {
30 | strokeDashoffset: string;
31 | transform: string;
32 | };
33 | };
34 | '.uk-spinner': {};
35 | };
36 | export default _default;
37 |
--------------------------------------------------------------------------------
/dist/components/spinner.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-spinner > *': {
3 | animation: 'uk-spinner-rotate 1.4s linear infinite'
4 | },
5 | '@keyframes uk-spinner-rotate': {
6 | '0%': {
7 | transform: 'rotate(0deg)'
8 | },
9 | '100%': {
10 | transform: 'rotate(270deg)'
11 | }
12 | },
13 | '.uk-spinner > * > *': {
14 | strokeDasharray: '88px',
15 | strokeDashoffset: '0',
16 | transformOrigin: 'center',
17 | animation: 'uk-spinner-dash 1.4s ease-in-out infinite',
18 | strokeWidth: '1',
19 | strokeLinecap: 'round'
20 | },
21 | '@keyframes uk-spinner-dash': {
22 | '0%': {
23 | strokeDashoffset: '88px'
24 | },
25 | '50%': {
26 | strokeDashoffset: '22px',
27 | transform: 'rotate(135deg)'
28 | },
29 | '100%': {
30 | strokeDashoffset: '88px',
31 | transform: 'rotate(450deg)'
32 | }
33 | },
34 | '.uk-spinner': {}
35 | };
36 |
--------------------------------------------------------------------------------
/dist/components/stepper.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-stepper': {
3 | display: string;
4 | };
5 | '.uk-stepper-counter': {
6 | counterReset: string;
7 | };
8 | '.uk-stepper-counter li': {
9 | counterIncrement: string;
10 | };
11 | '.uk-stepper-default': {
12 | justifyContent: string;
13 | color: string;
14 | flexWrap: string;
15 | fontSize: string;
16 | };
17 | '.uk-stepper-default li': {
18 | display: string;
19 | alignItems: string;
20 | width: string;
21 | textWrap: string;
22 | position: string;
23 | };
24 | '.uk-stepper-default:has(li.uk-active) li.uk-active ~ li': {
25 | color: string;
26 | };
27 | '.uk-stepper-default li.uk-active,.uk-stepper-default li.uk-stepper-checked, .uk-stepper-default:has(li.uk-active) li': {
28 | color: string;
29 | };
30 | '.uk-stepper-default .uk-stepper-checked a::before': {
31 | content: string;
32 | display: string;
33 | backgroundImage: string;
34 | backgroundRepeat: string;
35 | backgroundPosition: string;
36 | position: string;
37 | height: string;
38 | width: string;
39 | justifyContent: string;
40 | alignItems: string;
41 | left: string;
42 | margin: string;
43 | border: string;
44 | borderColor: string;
45 | borderRadius: string;
46 | };
47 | '.uk-stepper-default li:not(:last-child)::after': {
48 | content: string;
49 | color: string;
50 | marginLeft: string;
51 | marginRight: string;
52 | };
53 | };
54 | export default _default;
55 |
--------------------------------------------------------------------------------
/dist/components/sticky.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-sticky': {
3 | position: string;
4 | zIndex: string;
5 | boxSizing: string;
6 | };
7 | '.uk-sticky-fixed': {
8 | margin: string;
9 | WebkitBackfaceVisibility: string;
10 | backfaceVisibility: string;
11 | };
12 | ".uk-sticky[class*='uk-anmt-']": {
13 | animationDuration: string;
14 | };
15 | '.uk-sticky.uk-anmt-reverse': {
16 | animationDuration: string;
17 | };
18 | '.uk-sticky-placeholder': {
19 | pointerEvents: string;
20 | };
21 | };
22 | export default _default;
23 |
--------------------------------------------------------------------------------
/dist/components/sticky.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-sticky': {
3 | position: 'relative',
4 | zIndex: '980',
5 | boxSizing: 'border-box'
6 | },
7 | '.uk-sticky-fixed': {
8 | margin: '0 !important',
9 | WebkitBackfaceVisibility: 'hidden',
10 | backfaceVisibility: 'hidden'
11 | },
12 | ".uk-sticky[class*='uk-anmt-']": {
13 | animationDuration: '0.2s'
14 | },
15 | '.uk-sticky.uk-anmt-reverse': {
16 | animationDuration: '0.2s'
17 | },
18 | '.uk-sticky-placeholder': {
19 | pointerEvents: 'none'
20 | }
21 | };
22 |
--------------------------------------------------------------------------------
/dist/components/svg.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | ".uk-svg, .uk-svg:not(.uk-preserve) [fill*='#']:not(.uk-preserve)": {
3 | fill: string;
4 | };
5 | ".uk-svg:not(.uk-preserve) [stroke*='#']:not(.uk-preserve)": {
6 | stroke: string;
7 | };
8 | '.uk-svg': {
9 | transform: string;
10 | };
11 | };
12 | export default _default;
13 |
--------------------------------------------------------------------------------
/dist/components/svg.js:
--------------------------------------------------------------------------------
1 | export default {
2 | ".uk-svg, .uk-svg:not(.uk-preserve) [fill*='#']:not(.uk-preserve)": {
3 | fill: 'currentcolor'
4 | },
5 | ".uk-svg:not(.uk-preserve) [stroke*='#']:not(.uk-preserve)": {
6 | stroke: 'currentcolor'
7 | },
8 | '.uk-svg': {
9 | transform: 'translate(0, 0)'
10 | }
11 | };
12 |
--------------------------------------------------------------------------------
/dist/components/switcher.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-switcher > :not(.uk-active)': {
3 | display: string;
4 | };
5 | };
6 | export default _default;
7 |
--------------------------------------------------------------------------------
/dist/components/switcher.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-switcher > :not(.uk-active)': {
3 | display: 'none'
4 | }
5 | };
6 |
--------------------------------------------------------------------------------
/dist/components/table.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-table': {
3 | width: string;
4 | borderCollapse: string;
5 | borderSpacing: string;
6 | };
7 | '.uk-table th': {
8 | padding: string;
9 | textAlign: string;
10 | fontSize: string;
11 | fontWeight: string;
12 | color: string;
13 | };
14 | '.uk-table td': {
15 | padding: string;
16 | verticalAlign: string;
17 | };
18 | '.uk-table tfoot': {
19 | fontSize: string;
20 | };
21 | '.uk-table caption': {
22 | fontSize: string;
23 | color: string;
24 | };
25 | '.uk-table-middle, .uk-table-middle td': {
26 | verticalAlign: string;
27 | };
28 | '.uk-table-divider > tr:not(:first-child), .uk-table-divider > :not(:first-child) > tr, .uk-table-divider > :first-child > tr:not(:first-child)': {
29 | borderTop: string;
30 | };
31 | '.uk-table-striped > tr:nth-of-type(odd), .uk-table-striped tbody tr:nth-of-type(odd)': {
32 | borderTop: string;
33 | borderBottom: string;
34 | backgroundColor: string;
35 | };
36 | '.uk-table-hover > tr:hover, .uk-table-hover tbody tr:hover': {
37 | backgroundColor: string;
38 | transition: string;
39 | };
40 | '.uk-table > tr.uk-active, .uk-table tbody tr.uk-active': {
41 | backgroundColor: string;
42 | };
43 | '.uk-table-justify th:first-child, .uk-table-justify td:first-child': {
44 | paddingLeft: string;
45 | };
46 | '.uk-table-justify th:last-child, .uk-table-justify td:last-child': {
47 | paddingRight: string;
48 | };
49 | '.uk-table-shrink': {
50 | width: string;
51 | };
52 | '.uk-table-expand': {
53 | minWidth: string;
54 | };
55 | '.uk-table-link': {
56 | padding: string;
57 | };
58 | '.uk-table-link > a': {
59 | padding: string;
60 | display: string;
61 | };
62 | '.uk-table-striped > tr:nth-of-type(even):last-child, .uk-table-striped tbody tr:nth-of-type(even):last-child': {
63 | borderBottom: string;
64 | };
65 | '.uk-table-sm': {
66 | '--uk-table-cell-padding': string;
67 | };
68 | '.uk-table-lg': {
69 | '--uk-table-cell-padding': string;
70 | };
71 | };
72 | export default _default;
73 |
--------------------------------------------------------------------------------
/dist/components/tag.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-tag': {
3 | display: string;
4 | alignItems: string;
5 | minHeight: string;
6 | padding: string;
7 | gap: string;
8 | fontSize: string;
9 | lineHeight: string;
10 | borderRadius: string;
11 | backgroundColor: string;
12 | color: string;
13 | transition: string;
14 | };
15 | '.uk-tag:hover': {
16 | transitionProperty: string;
17 | transitionDuration: string;
18 | transitionTimingFunction: string;
19 | opacity: string;
20 | };
21 | '.uk-tag-primary': {
22 | '--uk-tag-bg': string;
23 | '--uk-tag-color': string;
24 | };
25 | '.uk-tag-primary:hover': {
26 | '--uk-tag-bg': string;
27 | };
28 | '.uk-tag-secondary': {
29 | '--uk-tag-bg': string;
30 | '--uk-tag-color': string;
31 | };
32 | '.uk-tag-secondary:hover': {
33 | '--uk-tag-bg': string;
34 | };
35 | '.uk-tag-destructive': {
36 | '--uk-tag-bg': string;
37 | '--uk-tag-color': string;
38 | };
39 | '.uk-tag-destructive:hover': {
40 | '--uk-tag-bg': string;
41 | };
42 | };
43 | export default _default;
44 |
--------------------------------------------------------------------------------
/dist/components/tag.js:
--------------------------------------------------------------------------------
1 | export default {
2 | // Tags
3 | '.uk-tag': {
4 | // Layout
5 | display: 'var(--uk-tag-display, inline-flex)',
6 | alignItems: 'var(--uk-tag-align, center)',
7 | minHeight: 'var(--uk-tag-height, 1.75rem)',
8 | padding: 'var(--uk-tag-padding, 0.25rem 0.5rem)',
9 | gap: 'var(--uk-tag-gap, 0.5rem)',
10 | // Typography
11 | fontSize: 'var(--uk-tag-font-size, var(--uk-global-font-size-s))',
12 | lineHeight: 'var(--uk-tag-leading, var(--uk-global-leading-s))',
13 | // Visual
14 | borderRadius: 'var(--uk-tag-radius, var(--uk-global-radius-s))',
15 | backgroundColor: 'var(--uk-tag-bg, transparent)',
16 | color: 'var(--uk-tag-color, hsl(var(--foreground)))',
17 | // Reset transition
18 | transition: 'none'
19 | },
20 | '.uk-tag:hover': {
21 | transitionProperty: 'background-color', // Removed variable - fundamental transition
22 | transitionDuration: 'var(--uk-tag-hover-duration, 150ms)',
23 | transitionTimingFunction: 'ease-in-out', // Removed variable - fundamental timing
24 | opacity: 'var(--uk-tag-hover-opacity, 0.8)'
25 | },
26 | // Variants
27 | '.uk-tag-primary': {
28 | '--uk-tag-bg': 'hsl(var(--primary))',
29 | '--uk-tag-color': 'hsl(var(--primary-foreground))'
30 | },
31 | '.uk-tag-primary:hover': {
32 | '--uk-tag-bg': 'hsl(var(--primary) / 0.8)'
33 | },
34 | '.uk-tag-secondary': {
35 | '--uk-tag-bg': 'hsl(var(--secondary))',
36 | '--uk-tag-color': 'hsl(var(--secondary-foreground))'
37 | },
38 | '.uk-tag-secondary:hover': {
39 | '--uk-tag-bg': 'hsl(var(--secondary) / 0.8)'
40 | },
41 | '.uk-tag-destructive': {
42 | '--uk-tag-bg': 'hsl(var(--destructive))',
43 | '--uk-tag-color': 'hsl(var(--destructive-foreground))'
44 | },
45 | '.uk-tag-destructive:hover': {
46 | '--uk-tag-bg': 'hsl(var(--destructive) / 0.8)'
47 | }
48 | };
49 |
--------------------------------------------------------------------------------
/dist/components/theme-switcher.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-theme-switcher': {
3 | display: string;
4 | flex: string;
5 | flexDirection: string;
6 | gap: string;
7 | };
8 | '.uk-theme-switcher-key': {
9 | gap: string;
10 | display: string;
11 | flexDirection: string;
12 | margin: string;
13 | };
14 | '.uk-theme-switcher-value': {
15 | display: string;
16 | gridTemplateColumns: string;
17 | gap: string;
18 | };
19 | '.uk-theme-switcher-value button': {
20 | display: string;
21 | height: string;
22 | alignItems: string;
23 | justifyContent: string;
24 | padding: string;
25 | fontSize: string;
26 | lineHeight: string;
27 | fontWeight: string;
28 | borderRadius: string;
29 | boxShadow: string;
30 | border: string;
31 | backgroundColor: string;
32 | color: string;
33 | };
34 | '.uk-theme-switcher-value button:hover': {
35 | transitionProperty: string;
36 | transitionDuration: string;
37 | transitionTimingFunction: string;
38 | backgroundColor: string;
39 | color: string;
40 | };
41 | '.uk-theme-switcher-value button.uk-active': {
42 | border: string;
43 | outline: string;
44 | };
45 | '.uk-theme-switcher-hex': {
46 | display: string;
47 | height: string;
48 | width: string;
49 | flexShrink: string;
50 | transform: string;
51 | alignItems: string;
52 | justifyContent: string;
53 | borderRadius: string;
54 | color: string;
55 | };
56 | '.uk-theme-switcher-text:not(:first-child)': {
57 | overflow: string;
58 | textOverflow: string;
59 | marginLeft: string;
60 | };
61 | '.uk-radii-none': {
62 | '--uk-global-radius-s': string;
63 | '--uk-global-radius': string;
64 | };
65 | '.uk-radii-sm': {
66 | '--uk-global-radius-s': string;
67 | '--uk-global-radius': string;
68 | };
69 | '.uk-radii-lg': {
70 | '--uk-global-radius-s': string;
71 | '--uk-global-radius': string;
72 | };
73 | '.uk-shadows-none': {
74 | '--uk-global-shadow-s': string;
75 | '--uk-global-shadow': string;
76 | };
77 | '.uk-shadows-md': {
78 | '--uk-global-shadow-s': string;
79 | '--uk-global-shadow': string;
80 | };
81 | '.uk-shadows-lg': {
82 | '--uk-global-shadow-s': string;
83 | '--uk-global-shadow': string;
84 | };
85 | '.uk-font-sm': {
86 | '--uk-global-font-size': string;
87 | '--uk-global-leading': string;
88 | '--uk-global-font-size-s': string;
89 | '--uk-global-leading-s': string;
90 | };
91 | };
92 | export default _default;
93 |
--------------------------------------------------------------------------------
/dist/components/thumbnav.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-thumbnav': {
3 | display: string;
4 | flexWrap: string;
5 | margin: string;
6 | padding: string;
7 | listStyle: string;
8 | marginLeft: string;
9 | };
10 | '.uk-thumbnav > *': {
11 | paddingLeft: string;
12 | };
13 | '.uk-thumbnav > * > *': {
14 | display: string;
15 | position: string;
16 | };
17 | '.uk-thumbnav > * > *::after': {
18 | content: string;
19 | position: string;
20 | top: string;
21 | bottom: string;
22 | left: string;
23 | right: string;
24 | backgroundImage: string;
25 | transition: string;
26 | };
27 | '.uk-thumbnav > * > :hover::after': {
28 | opacity: string;
29 | };
30 | '.uk-thumbnav > .uk-active > *::after': {
31 | opacity: string;
32 | };
33 | '.uk-thumbnav-vertical': {
34 | flexDirection: string;
35 | marginLeft: string;
36 | marginTop: string;
37 | };
38 | '.uk-thumbnav-vertical > *': {
39 | paddingLeft: string;
40 | paddingTop: string;
41 | };
42 | };
43 | export default _default;
44 |
--------------------------------------------------------------------------------
/dist/components/thumbnav.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-thumbnav': {
3 | display: 'flex', // obvious value, layout property
4 | flexWrap: 'wrap', // obvious value, layout property
5 | margin: '0', // reset, obvious value
6 | padding: '0', // reset, obvious value
7 | listStyle: 'none', // reset, obvious value for lists
8 | marginLeft: 'var(--uk-thumbnav-margin-horizontal, -1rem)' // Customizable horizontal margin for spacing
9 | },
10 | '.uk-thumbnav > *': {
11 | paddingLeft: 'var(--uk-thumbnav-item-padding-horizontal, 1rem)' // Customizable horizontal padding for item spacing, consistent with container margin
12 | },
13 | '.uk-thumbnav > * > *': {
14 | display: 'inline-block', // obvious value, layout property
15 | position: 'relative' // obvious value, for positioning pseudo-element
16 | },
17 | '.uk-thumbnav > * > *::after': {
18 | content: "''", // required for pseudo-element, obvious value
19 | position: 'absolute', // required for overlay, obvious value
20 | top: '0', // position fill, obvious value
21 | bottom: '0', // position fill, obvious value
22 | left: '0', // position fill, obvious value
23 | right: '0', // position fill, obvious value
24 | backgroundImage: 'var(--uk-thumbnav-overlay-background, linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.4)))', // Customizable overlay gradient
25 | transition: 'var(--uk-thumbnav-overlay-transition, opacity 0.1s ease-in-out)' // Customizable overlay transition
26 | },
27 | '.uk-thumbnav > * > :hover::after': {
28 | opacity: 'var(--uk-thumbnav-overlay-hover-opacity, 0)' // Customizable overlay opacity on hover
29 | },
30 | '.uk-thumbnav > .uk-active > *::after': {
31 | opacity: 'var(--uk-thumbnav-overlay-active-opacity, 0)' // Customizable overlay opacity on active state
32 | },
33 | '.uk-thumbnav-vertical': {
34 | flexDirection: 'column', // obvious value, layout change for vertical
35 | marginLeft: 'var(--uk-thumbnav-vertical-margin-horizontal, 0)', // Customizable horizontal margin reset for vertical layout
36 | marginTop: 'var(--uk-thumbnav-margin-vertical, -1rem)' // Customizable vertical margin for vertical spacing
37 | },
38 | '.uk-thumbnav-vertical > *': {
39 | paddingLeft: '0', // reset horizontal padding for vertical layout, obvious value
40 | paddingTop: 'var(--uk-thumbnav-item-padding-vertical, 1rem)' // Customizable vertical padding for item spacing in vertical layout
41 | }
42 | };
43 |
--------------------------------------------------------------------------------
/dist/components/tooltip.d.ts:
--------------------------------------------------------------------------------
1 | declare const _default: {
2 | '.uk-tooltip': {
3 | display: string;
4 | position: string;
5 | zIndex: string;
6 | top: string;
7 | maxWidth: string;
8 | padding: string;
9 | fontSize: string;
10 | lineHeight: string;
11 | borderRadius: string;
12 | backgroundColor: string;
13 | color: string;
14 | '--uk-position-offset': string;
15 | '--uk-position-viewport-offset': string;
16 | };
17 | '.uk-tooltip.uk-active': {
18 | display: string;
19 | };
20 | };
21 | export default _default;
22 |
--------------------------------------------------------------------------------
/dist/components/tooltip.js:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-tooltip': {
3 | // Layout
4 | display: 'none', // Removed variable - fundamental behavior
5 | position: 'absolute', // Removed variable - fundamental positioning
6 | zIndex: 'var(--uk-tooltip-z-index, 1030)',
7 | top: 'var(--uk-tooltip-top, 0)',
8 | maxWidth: 'var(--uk-tooltip-max-width, 208px)',
9 | padding: 'var(--uk-tooltip-padding, 0.375rem 0.75rem)',
10 | // Typography
11 | fontSize: 'var(--uk-tooltip-font-size, var(--uk-global-font-size-s))',
12 | lineHeight: 'var(--uk-tooltip-leading, var(--uk-global-leading-s))',
13 | // Visual
14 | borderRadius: 'var(--uk-tooltip-radius, var(--uk-global-radius))',
15 | backgroundColor: 'var(--uk-tooltip-bg, hsl(var(--primary)))',
16 | color: 'var(--uk-tooltip-color, hsl(var(--primary-foreground)))',
17 | // Position offset variables - keep as is per rule #4
18 | '--uk-position-offset': '10px',
19 | '--uk-position-viewport-offset': '8px'
20 | },
21 | '.uk-tooltip.uk-active': {
22 | display: 'block' // Removed variable - fundamental behavior
23 | }
24 | };
25 |
--------------------------------------------------------------------------------
/dist/css/franken-ui.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/dist/css/franken-ui.css
--------------------------------------------------------------------------------
/dist/index.d.ts:
--------------------------------------------------------------------------------
1 | import type { Colors, Options } from './types.js';
2 | export declare const variables: {
3 | [key: string]: Colors;
4 | };
5 | declare const _default: {
6 | (options: Options): {
7 | handler: import("tailwindcss/types/config.js").PluginCreator;
8 | config?: Partial;
9 | };
10 | __isOptionsFunction: true;
11 | };
12 | export default _default;
13 |
--------------------------------------------------------------------------------
/dist/merger.d.ts:
--------------------------------------------------------------------------------
1 | import type { Components, CSSRuleObject } from './types.js';
2 | declare const _default: (options: {
3 | palettes: CSSRuleObject;
4 | components: Components;
5 | }) => CSSRuleObject;
6 | export default _default;
7 |
--------------------------------------------------------------------------------
/dist/merger.js:
--------------------------------------------------------------------------------
1 | import merge from 'lodash/merge.js';
2 | export default (options) => {
3 | const { palettes, components } = options;
4 | const rules = {};
5 | for (const key in components) {
6 | if (Object.prototype.hasOwnProperty.call(components, key)) {
7 | merge(rules, components[key]);
8 | }
9 | }
10 | return { ...palettes, ...rules };
11 | };
12 |
--------------------------------------------------------------------------------
/dist/palette.d.ts:
--------------------------------------------------------------------------------
1 | export default function (variables: {
2 | [key: string]: {
3 | [key: string]: string;
4 | };
5 | }): {
6 | [key: string]: {
7 | [key: string]: string;
8 | };
9 | };
10 |
--------------------------------------------------------------------------------
/dist/plugin-vite.d.ts:
--------------------------------------------------------------------------------
1 | import type { Options } from './types.js';
2 | export default function customPalettePlugin(options: Options): any;
3 |
--------------------------------------------------------------------------------
/dist/plugin-vite.js:
--------------------------------------------------------------------------------
1 | import fs, { readFileSync } from 'fs';
2 | import path from 'path';
3 | import merge from 'lodash/merge.js';
4 | import { fileURLToPath } from 'url';
5 | import { preflight } from './components/index.js';
6 | import { defaults, palettes, components } from './context.js';
7 | import postcssJs from 'postcss-js';
8 | import postcss from 'postcss';
9 | import merger from './merger.js';
10 | function css(rules) {
11 | const processor = postcss([]);
12 | return processor.process(rules, { parser: postcssJs.parse }).css;
13 | }
14 | export default function customPalettePlugin(options) {
15 | let config;
16 | return {
17 | name: 'vite-plugin-franken',
18 | configResolved(resolvedConfig) {
19 | config = resolvedConfig;
20 | try {
21 | const pkgJson = JSON.parse(readFileSync('package.json', 'utf-8'));
22 | const tailwindVersion = pkgJson.dependencies?.tailwindcss || pkgJson.devDependencies?.tailwindcss;
23 | if (tailwindVersion?.startsWith('^4.') && options?.preflight) {
24 | console.warn('\n[@franken-ui/ui] Warning: Tailwind CSS v4 detected in your project.' +
25 | '\nYou may want to disable preflight in Franken UI since Tailwind v4' +
26 | '\nalready includes modern CSS reset styles.\n');
27 | }
28 | }
29 | catch (error) { }
30 | },
31 | buildStart() {
32 | let rules = options?.preflight ? { ...preflight } : {};
33 | let context = {
34 | defaults,
35 | palettes: palettes(options),
36 | components
37 | };
38 | if (options.extensions) {
39 | for (const [plugin, config] of options.extensions) {
40 | context = plugin(context, config);
41 | }
42 | }
43 | // merged rules of palettes and components
44 | const r = merger({
45 | palettes: context.palettes,
46 | components: context.components
47 | });
48 | rules = merge(rules, context.defaults, r);
49 | const __dirname = path.dirname(fileURLToPath(import.meta.url));
50 | const outputPath = path.join(__dirname, '/css/franken-ui.css');
51 | fs.mkdirSync(path.dirname(outputPath), { recursive: true });
52 | fs.writeFileSync(outputPath, css(rules));
53 | }
54 | };
55 | }
56 |
--------------------------------------------------------------------------------
/dist/postcss/combine-duplicated-selectors.cjs:
--------------------------------------------------------------------------------
1 | module.exports = require('postcss-combine-duplicated-selectors');
2 |
--------------------------------------------------------------------------------
/dist/postcss/combine-duplicated-selectors.d.cts:
--------------------------------------------------------------------------------
1 | declare const _exports: import("postcss").PluginCreator;
2 | export = _exports;
3 |
--------------------------------------------------------------------------------
/dist/postcss/sort-media-queries.cjs:
--------------------------------------------------------------------------------
1 | module.exports = require('postcss-sort-media-queries');
2 |
--------------------------------------------------------------------------------
/dist/postcss/sort-media-queries.d.cts:
--------------------------------------------------------------------------------
1 | declare const _exports: any;
2 | export = _exports;
3 |
--------------------------------------------------------------------------------
/dist/rules.js:
--------------------------------------------------------------------------------
1 | import merge from 'lodash/merge.js';
2 | import { root, accordion, alert, animation, badge, breadcrumb, button, card, chart, cmd, comment, container, cover, date, divider, dotnav, drop, form, heading, icon, media, modal, nav, notification, offcanvas, label, leader, lightbox, link, list, pagination, position, print, sizing, slider, sortable, spinner, stepper, sticky, svg, switcher, tab, table, themeSwitcher, thumbnav, tooltip, transition, utility } from './components/index.js';
3 | import { variables } from './index.js';
4 | import palette from './palette.js';
5 | export const defaults = {
6 | ':root': root[':root'],
7 | '.dark': root['.dark'],
8 | body: {
9 | fontSize: 'var(--uk-global-font-size)',
10 | lineHeight: 'var(--uk-global-leading)'
11 | },
12 | '.uk-accordion-title:focus-visible, .uk-alert-close:focus-visible, .uk-alert a:not([class]):focus-visible, .uk-badge:focus-visible, .uk-breadcrumb > * > *:focus-visible, .uk-btn:focus-visible, .uk-cal table tbody tr td button:focus-visible, .uk-close:focus-visible, .uk-input-range-knob:focus-visible, .uk-toggle-switch:focus-visible, a.uk-link-muted:focus-visible, .uk-link-muted a:focus-visible, .uk-link-toggle:focus-visible .uk-link-muted:focus-visible, a.uk-link-reset:focus-visible, .uk-link-reset a:focus-visible, .uk-link-toggle:focus-visible, .uk-link:focus-visible, .uk-nav li > a:focus-visible, .uk-slidenav:focus-visible, .uk-tab > * > a:focus-visible, .uk-tab-alt > * > a:focus-visible, .uk-ts-value button:focus-visible, .uk-lightbox :focus-visible': {
13 | // Split outline into individual properties
14 | outlineWidth: 'var(--uk-global-focus-outline-width, 2px)',
15 | outlineStyle: 'var(--uk-global-focus-outline-style, dotted)',
16 | outlineColor: 'var(--uk-global-focus-outline-color, hsl(var(--ring)))',
17 | // Add transition for focus state
18 | transitionProperty: 'var(--uk-global-focus-transition-property, outline)',
19 | transitionDuration: 'var(--uk-global-focus-transition-duration, 150ms)',
20 | transitionTimingFunction: 'var(--uk-global-focus-transition-timing, ease-in-out)'
21 | }
22 | };
23 | export const components = merge(accordion, alert, animation, badge, breadcrumb, button, card, chart, cmd, comment, container, cover, date, divider, dotnav, drop, form, heading, icon, label, leader, lightbox, link, list, modal, nav, notification, offcanvas, pagination, position, sizing, slider, sortable, spinner, stepper, sticky, svg, switcher, tab, table, themeSwitcher, thumbnav, tooltip, transition, utility, media, print);
24 | export function palettes(options) {
25 | const all = options?.customPalette ? { ...variables, ...options.customPalette } : variables;
26 | return palette(all);
27 | }
28 |
--------------------------------------------------------------------------------
/dist/shadcn-ui/preset-quick.d.ts:
--------------------------------------------------------------------------------
1 | import type { Options } from '../types.js';
2 | export default function (options?: Options): {
3 | darkMode: string;
4 | theme: {
5 | extend: {
6 | colors: {
7 | background: string;
8 | foreground: string;
9 | muted: string;
10 | 'muted-foreground': string;
11 | card: string;
12 | 'card-foreground': string;
13 | popover: string;
14 | 'popover-foreground': string;
15 | border: string;
16 | input: string;
17 | primary: string;
18 | 'primary-foreground': string;
19 | secondary: string;
20 | 'secondary-foreground': string;
21 | accent: string;
22 | 'accent-foreground': string;
23 | destructive: string;
24 | 'destructive-foreground': string;
25 | ring: string;
26 | };
27 | fontFamily: {
28 | 'geist-sans': string[];
29 | 'geist-mono': string[];
30 | };
31 | screens: {
32 | 'max-sm': {
33 | max: string;
34 | };
35 | 'max-md': {
36 | max: string;
37 | };
38 | 'max-lg': {
39 | max: string;
40 | };
41 | 'max-xl': {
42 | max: string;
43 | };
44 | };
45 | };
46 | };
47 | plugins: {
48 | handler: import("tailwindcss/types/config.js").PluginCreator;
49 | config?: Partial;
50 | }[];
51 | };
52 |
--------------------------------------------------------------------------------
/dist/shadcn-ui/preset-quick.js:
--------------------------------------------------------------------------------
1 | import defaultTheme from 'tailwindcss/defaultTheme.js';
2 | import ui from '../index.js';
3 | export default function (options = {}) {
4 | return {
5 | darkMode: 'class',
6 | theme: {
7 | extend: {
8 | colors: {
9 | background: 'hsl(var(--background))',
10 | foreground: 'hsl(var(--foreground))',
11 | muted: 'hsl(var(--muted))',
12 | 'muted-foreground': 'hsl(var(--muted-foreground))',
13 | card: 'hsl(var(--card))',
14 | 'card-foreground': 'hsl(var(--card-foreground))',
15 | popover: 'hsl(var(--popover))',
16 | 'popover-foreground': 'hsl(var(--popover-foreground))',
17 | border: 'hsl(var(--border))',
18 | input: 'hsl(var(--input))',
19 | primary: 'hsl(var(--primary))',
20 | 'primary-foreground': 'hsl(var(--primary-foreground))',
21 | secondary: 'hsl(var(--secondary))',
22 | 'secondary-foreground': 'hsl(var(--secondary-foreground))',
23 | accent: 'hsl(var(--accent))',
24 | 'accent-foreground': 'hsl(var(--accent-foreground))',
25 | destructive: 'hsl(var(--destructive))',
26 | 'destructive-foreground': 'hsl(var(--destructive-foreground))',
27 | ring: 'hsl(var(--ring))'
28 | },
29 | fontFamily: {
30 | 'geist-sans': ['Geist Sans', ...defaultTheme.fontFamily.sans],
31 | 'geist-mono': ['Geist Mono', ...defaultTheme.fontFamily.mono]
32 | },
33 | screens: {
34 | 'max-sm': { max: '640px' },
35 | 'max-md': { max: '768px' },
36 | 'max-lg': { max: '1024px' },
37 | 'max-xl': { max: '1280px' }
38 | }
39 | }
40 | },
41 | plugins: [ui(options)]
42 | };
43 | }
44 |
--------------------------------------------------------------------------------
/dist/types.d.ts:
--------------------------------------------------------------------------------
1 | export interface RecursiveKeyValuePair {
2 | [key: string]: V | RecursiveKeyValuePair;
3 | }
4 | export type CSSRuleObject = RecursiveKeyValuePair;
5 | export type Colors = {
6 | '--background': string;
7 | '--foreground': string;
8 | '--muted': string;
9 | '--muted-foreground': string;
10 | '--popover': string;
11 | '--popover-foreground': string;
12 | '--card': string;
13 | '--card-foreground': string;
14 | '--border': string;
15 | '--input': string;
16 | '--primary': string;
17 | '--primary-foreground': string;
18 | '--secondary': string;
19 | '--secondary-foreground': string;
20 | '--accent': string;
21 | '--accent-foreground': string;
22 | '--destructive': string;
23 | '--destructive-foreground': string;
24 | '--ring': string;
25 | };
26 | export type Palette = {
27 | [key: string]: Colors;
28 | };
29 | export type Options = {
30 | preflight?: boolean;
31 | customPalette?: Palette;
32 | extensions?: Extensions;
33 | };
34 | declare const components: readonly ["accordion", "alert", "animation", "badge", "breadcrumb", "button", "card", "chart", "cmd", "comment", "container", "cover", "date", "divider", "dotnav", "drop", "form", "heading", "icon", "label", "leader", "lightbox", "link", "list", "modal", "nav", "notification", "offcanvas", "pagination", "sizing", "slider", "sortable", "spinner", "stepper", "sticky", "svg", "switcher", "tab", "table", "theme-switcher", "thumbnav", "tooltip", "utility", "media", "print"];
35 | export type ComponentKey = (typeof components)[number] | string;
36 | export type Component = {
37 | [key: string]: CSSRuleObject;
38 | };
39 | export type Components = {
40 | [K in ComponentKey]: Component;
41 | } & {
42 | [key: string]: Component;
43 | };
44 | export type Context = {
45 | defaults: {
46 | ':root': CSSRuleObject;
47 | '.dark': CSSRuleObject;
48 | [key: string]: CSSRuleObject;
49 | };
50 | palettes: CSSRuleObject;
51 | components: Components;
52 | };
53 | export type Extension = (context: Context, config: ExtensionConfig) => Context;
54 | export type ExtensionConfig = Record;
55 | export type Extensions = [Function, ExtensionConfig][];
56 | export {};
57 |
--------------------------------------------------------------------------------
/dist/types.js:
--------------------------------------------------------------------------------
1 | const components = [
2 | 'accordion',
3 | 'alert',
4 | 'animation',
5 | 'badge',
6 | 'breadcrumb',
7 | 'button',
8 | 'card',
9 | 'chart',
10 | 'cmd',
11 | 'comment',
12 | 'container',
13 | 'cover',
14 | 'date',
15 | 'divider',
16 | 'dotnav',
17 | 'drop',
18 | 'form',
19 | 'heading',
20 | 'icon',
21 | 'label',
22 | 'leader',
23 | 'lightbox',
24 | 'link',
25 | 'list',
26 | 'modal',
27 | 'nav',
28 | 'notification',
29 | 'offcanvas',
30 | 'pagination',
31 | 'sizing',
32 | 'slider',
33 | 'sortable',
34 | 'spinner',
35 | 'stepper',
36 | 'sticky',
37 | 'svg',
38 | 'switcher',
39 | 'tab',
40 | 'table',
41 | 'theme-switcher',
42 | 'thumbnav',
43 | 'tooltip',
44 | 'utility',
45 | 'media',
46 | 'print'
47 | ];
48 | export {};
49 |
--------------------------------------------------------------------------------
/postcss.config.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: [
3 | require('tailwindcss'),
4 | require('autoprefixer'),
5 | require('postcss-combine-duplicated-selectors')({
6 | removeDuplicatedProperties: true
7 | })
8 | ]
9 | };
10 |
--------------------------------------------------------------------------------
/src/app.d.ts:
--------------------------------------------------------------------------------
1 | // See https://kit.svelte.dev/docs/types#app
2 | // for information about these interfaces
3 | declare global {
4 | namespace App {
5 | // interface Error {}
6 | // interface Locals {}
7 | // interface PageData {}
8 | // interface PageState {}
9 | // interface Platform {}
10 | }
11 | }
12 |
13 | export {};
14 |
--------------------------------------------------------------------------------
/src/app.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
30 | %sveltekit.head%
31 |
32 |
33 | %sveltekit.body%
34 |
35 |
36 |
--------------------------------------------------------------------------------
/src/css/app.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
--------------------------------------------------------------------------------
/src/franken/test-item.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 | {title}
8 |
9 |
10 | {@render children()}
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/franken/test.svelte:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | {@render children()}
7 |
8 |
--------------------------------------------------------------------------------
/src/lib/bin.ts:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 |
3 | import init from './cli/init/index.js';
4 |
5 | const args = process.argv.slice(2);
6 |
7 | switch (args[0]) {
8 | case 'init':
9 | init(process.argv.slice(3));
10 | break;
11 |
12 | default:
13 | console.error(`Invalid command: ${args[0]}`);
14 | break;
15 | }
16 |
--------------------------------------------------------------------------------
/src/lib/cli/helpers/common.ts:
--------------------------------------------------------------------------------
1 | import uniq from 'lodash/uniq.js';
2 |
3 | export function parseArgs(
4 | args: string[],
5 | safelist: string[],
6 | map: { [key: string]: string }
7 | ): string[] {
8 | const result: string[] = [];
9 | const invalidCommands: string[] = [];
10 |
11 | args.forEach((arg) => {
12 | if (/^-[^-]/.test(arg)) {
13 | for (let i = 1; i < arg.length; i++) {
14 | const char = arg[i];
15 | const mappedArg = map[char];
16 | if (mappedArg && safelist.includes(mappedArg)) {
17 | result.push(mappedArg);
18 | } else {
19 | invalidCommands.push(`-${char}`);
20 | }
21 | }
22 | } else if (safelist.includes(arg)) {
23 | result.push(arg);
24 | } else {
25 | invalidCommands.push(arg);
26 | }
27 | });
28 |
29 | if (invalidCommands.length > 0) {
30 | console.error(`Invalid command ${invalidCommands.join(' ')}`);
31 | process.exit(1);
32 | }
33 |
34 | return uniq(result);
35 | }
36 |
--------------------------------------------------------------------------------
/src/lib/cli/init/index.ts:
--------------------------------------------------------------------------------
1 | import { existsSync, copyFileSync } from 'fs';
2 | import { join, dirname } from 'path';
3 | import { parseArgs } from '$lib/cli/helpers/common.js';
4 | import { fileURLToPath } from 'url';
5 |
6 | const __filename = fileURLToPath(import.meta.url);
7 | const __dirname = dirname(__filename);
8 |
9 | const extensions = ['js', 'cjs', 'ts'];
10 |
11 | function copy(stub: string, filename: string) {
12 | copyFileSync(join(__dirname, 'stubs', stub), join(process.cwd(), filename));
13 |
14 | console.log('Created config file:', filename);
15 | }
16 |
17 | export default function (args: string[]) {
18 | const map: { [key: string]: string } = { p: '--postcss', f: '--force' };
19 | const safelist = ['-p', '--postcss', '-f', '--force'];
20 |
21 | args = parseArgs(args, safelist, map);
22 |
23 | if (extensions.some((extension) => existsSync(`tailwind.config.${extension}`))) {
24 | console.error('tailwind.config.js already exists');
25 | } else {
26 | (() => {
27 | copy('tailwind.config.js', 'tailwind.config.js');
28 | })();
29 | }
30 |
31 | if (args.includes('--postcss')) {
32 | if (extensions.some((extension) => existsSync(`postcss.config.${extension}`))) {
33 | console.error('postcss.config.js already exists');
34 | return;
35 | }
36 |
37 | copy('postcss.config.cjs', 'postcss.config.cjs');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/lib/cli/init/stubs/postcss.config.cjs:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: [
3 | require('tailwindcss'),
4 | require('franken-ui/postcss/combine-duplicated-selectors')({
5 | removeDuplicatedProperties: true
6 | })
7 | ]
8 | };
9 |
--------------------------------------------------------------------------------
/src/lib/cli/init/stubs/tailwind.config.js:
--------------------------------------------------------------------------------
1 | import franken from 'franken-ui/shadcn-ui/preset-quick';
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | export default {
5 | presets: [franken()],
6 | content: [],
7 | safelist: [
8 | {
9 | pattern: /^uk-/
10 | },
11 | 'ProseMirror',
12 | 'ProseMirror-focused',
13 | 'tiptap',
14 | 'mr-2',
15 | 'mt-2',
16 | 'opacity-50'
17 | ],
18 | theme: {
19 | extend: {}
20 | },
21 | plugins: []
22 | };
23 |
--------------------------------------------------------------------------------
/src/lib/components/accordion.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-accordion-title': {
3 | // Layout
4 | display: 'var(--uk-accordion-title-display, flex)',
5 | justifyContent: 'var(--uk-accordion-title-justify, space-between)',
6 | alignItems: 'var(--uk-accordion-title-align, start)',
7 | overflow: 'var(--uk-accordion-title-overflow, hidden)',
8 | padding: 'var(--uk-accordion-title-padding, 1rem 0 1rem 0)',
9 | fontWeight: 'var(--uk-accordion-title-font, 500)'
10 | },
11 | '.uk-accordion-title:hover': {
12 | textDecoration: 'var(--uk-accordion-title-hover-decoration, underline)'
13 | },
14 | '.uk-accordion-icon': {
15 | flex: 'var(--uk-accordion-icon-flex, none)',
16 | transition: 'var(--uk-accordion-icon-transition, 300ms transform)',
17 | color: 'var(--uk-accordion-icon-color, hsl(var(--muted-foreground)))'
18 | },
19 | '.uk-open > .uk-accordion-title > .uk-accordion-icon': {
20 | transform: 'rotate(180deg)'
21 | },
22 | '.uk-accordion-content': {
23 | display: 'var(--uk-accordion-content-display, flow-root)',
24 | padding: 'var(--uk-accordion-content-padding, 0 0 1rem 0)'
25 | },
26 | '.uk-accordion-content[hidden]': {
27 | display: 'none'
28 | },
29 | '.uk-accordion > li': {
30 | borderWidth: 'var(--uk-accordion-item-border-width, 0 0 1px 0)',
31 | borderStyle: 'var(--uk-accordion-item-border-style, solid)',
32 | borderColor: 'var(--uk-accordion-item-border-color, hsl(var(--border)))'
33 | }
34 | };
35 |
--------------------------------------------------------------------------------
/src/lib/components/alert.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-alert': {
3 | // Layout
4 | position: 'var(--uk-alert-position, relative)',
5 | padding: 'var(--uk-alert-padding, 1rem 2rem 1rem 1rem)',
6 |
7 | // Visual
8 | backgroundColor: 'var(--uk-alert-bg, hsl(var(--muted) / .5))',
9 | color: 'var(--uk-alert-color, hsl(var(--foreground)))',
10 | borderRadius: 'var(--uk-alert-radius, var(--uk-global-radius))',
11 | borderWidth: 'var(--uk-alert-border-width, 1px)',
12 | borderStyle: 'var(--uk-alert-border-style, solid)',
13 | borderColor: 'var(--uk-alert-border-color, hsl(var(--border)))'
14 | },
15 | '.uk-alert-close': {
16 | // Layout
17 | position: 'var(--uk-alert-close-position, absolute)',
18 | inset: 'var(--uk-alert-close-inset, 1rem 1rem auto auto)'
19 | },
20 | '.uk-alert-destructive': {
21 | '--uk-alert-bg': 'hsl(var(--destructive))',
22 | '--uk-alert-color': 'hsl(var(--destructive-foreground))',
23 | '--uk-alert-border-color': 'hsl(var(--destructive))'
24 | },
25 | '.uk-alert a:not([class])': {
26 | // Typography
27 | fontWeight: 'var(--uk-alert-link-font-weight, 500)',
28 | textDecorationLine: 'var(--uk-alert-link-decoration-line, underline)',
29 | textUnderlineOffset: 'var(--uk-alert-link-underline-offset, 4px)'
30 | },
31 | '.uk-alert-title': {
32 | // Typography
33 | fontWeight: 'var(--uk-alert-title-font-weight, 500)',
34 | lineHeight: 'var(--uk-alert-title-leading, none)',
35 | letterSpacing: 'var(--uk-alert-title-tracking, -0.025em)' // Using Tailwind-like naming
36 | }
37 | };
38 |
--------------------------------------------------------------------------------
/src/lib/components/avatar.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-avatar': {
3 | backgroundColor: 'hsl(var(--background))',
4 | borderRadius: 'var(--uk-avatar-radius, var(--uk-global-radius))',
5 | position: 'relative',
6 | display: 'inline-flex',
7 | height: 'var(--uk-avatar-height, 2.5rem)',
8 | width: 'var(--uk-avatar-width, 2.5rem)',
9 | alignItems: 'center',
10 | justifyContent: 'center'
11 | },
12 | '.uk-avatar-image': {
13 | height: '100%',
14 | width: '100%',
15 | overflow: 'hidden'
16 | },
17 | '.uk-avatar.uk-avatar-rounded': {
18 | borderRadius: '9999px'
19 | },
20 | '.uk-avatar.uk-avatar-rounded img, .uk-avatar.uk-avatar-rounded .uk-avatar-text': {
21 | borderRadius: '9999px'
22 | },
23 | '.uk-avatar.uk-avatar-bordered': {
24 | borderWidth: 'var(--uk-avatar-bordered-border-width, 0.125rem)',
25 | borderColor: 'hsl(var(--border))',
26 | padding: 'var(--uk-avatar-bordered-padding, 0.25rem)'
27 | },
28 | '.uk-avatar img': {
29 | borderRadius: 'var(--uk-avatar-inner-radius, var(--uk-global-radius-s))',
30 | height: '100%',
31 | width: '100%',
32 | objectFit: 'cover'
33 | },
34 | '.uk-avatar-dot::after, .uk-avatar-dot-top::after, .uk-avatar-dot-top-right::after, .uk-avatar-dot-right::after, .uk-avatar-dot-bottom-right::after, .uk-avatar-dot-bottom::after, .uk-avatar-dot-bottom-left::after, .uk-avatar-dot-left::after, .uk-avatar-dot-top-left::after':
35 | {
36 | content: "''",
37 | position: 'absolute',
38 | height: 'var(--uk-avatar-dot-size, 0.875rem)',
39 | width: 'var(--uk-avatar-dot-size, 0.875rem)',
40 | borderRadius: '9999px',
41 | borderWidth: 'var(--uk-avatar-dot-border-width, 0.125rem)',
42 | borderColor: 'hsl(var(--background))',
43 | backgroundColor: 'var(--uk-avatar-dot-bg, hsl(var(--primary)))',
44 | transform: 'translate(0, 0)',
45 | zIndex: 'var(--uk-avatar-dot-z-index, 10)'
46 | },
47 | '.uk-avatar-dot::after, .uk-avatar-dot-bottom-right::after': {
48 | bottom: '0',
49 | right: '0',
50 | transform: 'translate(25%, 25%)'
51 | },
52 | '.uk-avatar-dot-top::after': {
53 | top: '0',
54 | left: '50%',
55 | transform: 'translate(-50%, -50%)'
56 | },
57 | '.uk-avatar-dot-top-right::after': {
58 | top: '0',
59 | right: '0',
60 | transform: 'translate(25%, -25%)'
61 | },
62 | '.uk-avatar-dot-right::after': {
63 | top: '50%',
64 | right: '0',
65 | transform: 'translate(50%, -50%)'
66 | },
67 | '.uk-avatar-dot-bottom::after': {
68 | bottom: '0',
69 | left: '50%',
70 | transform: 'translate(-50%, 50%)'
71 | },
72 | '.uk-avatar-dot-bottom-left::after': {
73 | bottom: '0',
74 | left: '0',
75 | transform: 'translate(-25%, 25%)'
76 | },
77 | '.uk-avatar-dot-left::after': {
78 | top: '50%',
79 | left: '0',
80 | transform: 'translate(-50%, -50%)'
81 | },
82 | '.uk-avatar-dot-top-left::after': {
83 | top: '0',
84 | left: '0',
85 | transform: 'translate(-25%, -25%)'
86 | },
87 | '.uk-avatar-text': {
88 | height: '100%',
89 | width: '100%',
90 | display: 'flex',
91 | justifyContent: 'center',
92 | alignItems: 'center',
93 | borderRadius: 'var(--uk-avatar-inner-radius, var(--uk-global-radius-s))'
94 | }
95 | };
96 |
--------------------------------------------------------------------------------
/src/lib/components/badge.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-badge': {
3 | // Layout
4 | display: 'var(--uk-badge-display, inline-flex)',
5 | justifyContent: 'var(--uk-badge-justify-content, center)',
6 | alignItems: 'var(--uk-badge-align-items, center)',
7 | height: 'var(--uk-badge-height, 1.25rem)',
8 | minWidth: 'var(--uk-badge-min-width, 1.25rem)',
9 | padding: 'var(--uk-badge-padding, 0 0.375rem)',
10 |
11 | // Typography
12 | fontSize: 'var(--uk-badge-font-size, var(--uk-global-font-size-s))',
13 | lineHeight: 'var(--uk-badge-leading, var(--uk-global-leading-s))',
14 | fontWeight: 'var(--uk-badge-font-weight, 600)',
15 |
16 | // Visual
17 | borderRadius: 'var(--uk-badge-radius, 500px)',
18 | boxShadow: 'var(--uk-badge-box-shadow, var(--uk-global-shadow))',
19 | border: 'var(--uk-badge-border, 1px solid hsl(var(--border)))',
20 | backgroundColor: 'var(--uk-badge-bg, transparent)',
21 | color: 'var(--uk-badge-color, hsl(var(--foreground)))'
22 |
23 | // States
24 | },
25 | '.uk-badge:hover': {
26 | transitionProperty: 'var(--uk-badge-hover-transition-property, background-color)',
27 | transitionDuration: 'var(--uk-badge-hover-transition-duration, 150ms)',
28 | transitionTimingFunction: 'var(--uk-badge-hover-transition-timing, ease-in-out)',
29 | opacity: 'var(--uk-badge-hover-opacity, 0.8)'
30 | },
31 | '.uk-badge-primary': {
32 | '--uk-badge-border': '1px solid hsl(var(--primary))',
33 | '--uk-badge-bg': 'hsl(var(--primary))',
34 | '--uk-badge-color': 'hsl(var(--primary-foreground))'
35 | },
36 | '.uk-badge-secondary': {
37 | '--uk-badge-border': '1px solid hsl(var(--secondary))',
38 | '--uk-badge-bg': 'hsl(var(--secondary))',
39 | '--uk-badge-color': 'hsl(var(--secondary-foreground))'
40 | },
41 | '.uk-badge-destructive': {
42 | '--uk-badge-border': '1px solid hsl(var(--destructive))',
43 | '--uk-badge-bg': 'hsl(var(--destructive))',
44 | '--uk-badge-color': 'hsl(var(--destructive-foreground))'
45 | }
46 | };
47 |
--------------------------------------------------------------------------------
/src/lib/components/breadcrumb.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-breadcrumb > *': {
3 | // Layout
4 | display: 'var(--uk-breadcrumb-display, contents)'
5 | },
6 | '.uk-breadcrumb > * > *': {
7 | // Layout
8 | display: 'var(--uk-breadcrumb-item-display, inline-flex)',
9 | alignItems: 'var(--uk-breadcrumb-item-align, center)',
10 |
11 | // Typography
12 | color: 'var(--uk-breadcrumb-item-color, hsl(var(--muted-foreground)))'
13 | },
14 | '.uk-breadcrumb > * > :hover': {
15 | // Typography
16 | textDecoration: 'var(--uk-breadcrumb-item-hover-decoration, none)',
17 | color: 'var(--uk-breadcrumb-item-hover-color, hsl(var(--foreground)))',
18 |
19 | // Hover-only transition
20 | transitionProperty: 'var(--uk-breadcrumb-item-hover-transition-property, color)',
21 | transitionDuration: 'var(--uk-breadcrumb-item-hover-transition-duration, 150ms)',
22 | transitionTimingFunction: 'var(--uk-breadcrumb-item-hover-transition-timing, ease-in-out)'
23 | },
24 | '.uk-breadcrumb > :last-child > span, .uk-breadcrumb > :last-child > a:not([href])': {
25 | // Typography
26 | fontWeight: 'var(--uk-breadcrumb-active-font-weight, 500)',
27 | color: 'var(--uk-breadcrumb-active-color, hsl(var(--foreground)))'
28 | },
29 | '.uk-breadcrumb > :nth-child(n + 2):not(.uk-first-column)::before': {
30 | // Content
31 | content: 'var(--uk-breadcrumb-divider, "/")',
32 | display: 'var(--uk-breadcrumb-divider-display, inline-block)',
33 |
34 | // Layout
35 | margin: 'var(--uk-breadcrumb-divider-margin, 0 0.75rem 0 0.5rem)',
36 |
37 | // Typography
38 | color: 'var(--uk-breadcrumb-divider-color, hsl(var(--muted-foreground)))'
39 | },
40 | '.uk-breadcrumb > .uk-disabled > *': {
41 | // Visual
42 | opacity: 'var(--uk-breadcrumb-disabled-opacity, 0.5)',
43 | pointerEvents: 'none' // static no need to make it a variable
44 | }
45 | };
46 |
--------------------------------------------------------------------------------
/src/lib/components/card.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-card': {
3 | position: 'relative', // obvious value, no need for var
4 | boxSizing: 'border-box', // obvious value, no need for var
5 | border: 'var(--uk-card-border, 1px solid hsl(var(--border)))',
6 | borderRadius: 'var(--uk-card-radius, var(--uk-global-radius))',
7 | boxShadow: 'var(--uk-card-shadow, var(--uk-global-shadow))',
8 | backgroundColor: 'var(--uk-card-bg, hsl(var(--card)))',
9 | color: 'var(--uk-card-color, hsl(var(--card-foreground)))'
10 | },
11 |
12 | '.uk-card-body, .uk-card-header, .uk-card-footer': {
13 | padding: 'var(--uk-card-padding, 1rem)'
14 | },
15 |
16 | '.uk-card-body > :last-child, .uk-card-header > :last-child, .uk-card-footer > :last-child': {
17 | marginBottom: 'var(--uk-card-last-child-margin, 0)'
18 | },
19 |
20 | '.uk-card-title': {
21 | fontSize: 'var(--uk-card-title-font-size, 1.125rem)',
22 | fontWeight: 'var(--uk-card-title-weight, 600)',
23 | lineHeight: 'var(--uk-card-title-height, 1)',
24 | letterSpacing: 'var(--uk-card-title-tracking, -0.025em)'
25 | },
26 |
27 | // Variants can be simplified
28 | '.uk-card-primary': {
29 | '--uk-card-border': '1px solid transparent',
30 | '--uk-card-bg': 'hsl(var(--primary))',
31 | '--uk-card-color': 'hsl(var(--primary-foreground))'
32 | },
33 |
34 | '.uk-card-secondary': {
35 | '--uk-card-border': '1px solid transparent',
36 | '--uk-card-bg': 'hsl(var(--secondary))',
37 | '--uk-card-color': 'hsl(var(--secondary-foreground))'
38 | },
39 |
40 | '.uk-card-destructive': {
41 | '--uk-card-border': '1px solid transparent',
42 | '--uk-card-bg': 'hsl(var(--destructive))',
43 | '--uk-card-color': 'hsl(var(--destructive-foreground))'
44 | },
45 |
46 | // Spacing adjustments remain the same
47 | '.uk-card-header + .uk-card-body, .uk-card-body + .uk-card-footer': {
48 | paddingTop: 'var(--uk-card-adjacent-padding, 0)'
49 | },
50 |
51 | '.uk-card-header ~ .uk-card-footer': {
52 | paddingTop: 'var(--uk-card-header-footer-padding, 0)'
53 | }
54 | };
55 |
--------------------------------------------------------------------------------
/src/lib/components/cmd.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-cmd-header': {
3 | display: 'flex', // obvious - standard header layout
4 | alignItems: 'center', // obvious - standard header layout
5 | gap: 'var(--uk-cmd-header-gap, 0.5rem)',
6 | padding: 'var(--uk-cmd-header-padding, 0 0.75rem)'
7 | },
8 |
9 | '.uk-cmd-header-input': {
10 | flex: '1', // obvious - should take remaining space
11 | padding: 'var(--uk-cmd-header-input-padding, 0.75rem 0)'
12 | },
13 |
14 | '.uk-cmd-header-input input': {
15 | width: '100%', // obvious - should fill container
16 | backgroundColor: 'transparent' // obvious - input should be transparent
17 | },
18 | '.uk-cmd-header-input input:focus': {
19 | outline: 'none'
20 | },
21 | '.uk-cmd-header-input input::placeholder': {
22 | color: 'var(--uk-cmd-input-placeholder-color, hsl(var(--muted-foreground)))'
23 | },
24 |
25 | '.uk-cmd-header-icon': {
26 | width: 'var(--uk-cmd-header-icon-size, 1rem)',
27 | height: 'var(--uk-cmd-header-icon-size, 1rem)',
28 | flex: 'none', // obvious - icon shouldn't grow/shrink
29 | color: 'var(--uk-cmd-header-icon-color, hsl(var(--muted-foreground)))'
30 | },
31 |
32 | '.uk-cmd-header-esc': {
33 | flex: 'none' // obvious - escape button shouldn't grow/shrink
34 | },
35 |
36 | '.uk-cmd-body': {
37 | maxHeight: 'var(--uk-cmd-body-max-height, 20rem)'
38 | },
39 |
40 | '.uk-cmd-item-wrapper': {
41 | display: 'flex', // obvious - standard item layout
42 | flex: '1', // obvious - should take full width
43 | alignItems: 'center' // obvious - vertical alignment
44 | },
45 |
46 | '.uk-cmd-item-icon': {
47 | marginRight: 'var(--uk-cmd-item-icon-margin, 0.5rem)',
48 | width: 'var(--uk-cmd-item-icon-size, 1rem)',
49 | height: 'var(--uk-cmd-item-icon-size, 1rem)',
50 | flex: 'none' // obvious - icon shouldn't grow/shrink
51 | },
52 |
53 | '.uk-cmd-item-text': {
54 | flex: '1' // obvious - should take remaining space
55 | }
56 | };
57 |
--------------------------------------------------------------------------------
/src/lib/components/comment.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-comment-body': {
3 | display: 'flow-root', // obvious - standard block formatting context
4 | overflowWrap: 'break-word', // obvious - prevent overflow
5 | wordWrap: 'break-word' // obvious - prevent overflow
6 | },
7 | '.uk-comment-header': {
8 | display: 'flow-root', // obvious - standard block formatting context
9 | marginBottom: 'var(--uk-comment-header-margin, 1.25rem)'
10 | },
11 | '.uk-comment-body > :last-child, .uk-comment-header > :last-child': {
12 | marginBottom: '0' // obvious - remove margin from last child
13 | },
14 | // Typography
15 | '.uk-comment-title': {
16 | fontSize: 'var(--uk-comment-title-font-size, 1rem)',
17 | fontWeight: 'var(--uk-comment-title-font-weight, 500)'
18 | },
19 | '.uk-comment-meta': {
20 | fontSize: 'var(--uk-comment-meta-font-size, var(--uk-global-font-size-s))',
21 | lineHeight: 'var(--uk-comment-meta-leading, var(--uk-global-leading-s))',
22 | marginTop: 'var(--uk-comment-meta-margin-top, 0.25rem)'
23 | },
24 | '.uk-comment-list > :nth-child(n + 2)': {
25 | marginTop: 'var(--uk-comment-list-gap, 0.75rem)'
26 | },
27 | // Nested comments
28 | '.uk-comment-list .uk-comment ~ ul': {
29 | marginInlineStart: 'var(--uk-comment-nested-margin, 1.5rem)',
30 | marginTop: 'var(--uk-comment-nested-margin-top, 1.5rem)',
31 | borderInlineStartWidth: 'var(--uk-comment-nested-border-width, 1px)',
32 | borderInlineStartStyle: 'var(--uk-comment-nested-border-style, solid)',
33 | borderInlineStartColor: 'var(--uk-comment-nested-border-color, hsl(var(--border)))'
34 | },
35 | '.uk-comment-list .uk-comment ~ ul > :nth-child(n + 2)': {
36 | marginTop: 'var(--uk-comment-nested-item-gap, 1.5rem)'
37 | },
38 | '.uk-comment-primary': {
39 | borderRadius: 'var(--uk-comment-primary-radius, var(--uk-global-radius))',
40 | backgroundColor: 'var(--uk-comment-primary-bg, hsl(var(--primary)))',
41 | color: 'var(--uk-comment-primary-color, hsl(var(--primary-foreground)))'
42 | },
43 | '.uk-comment': {
44 | padding: 'var(--uk-comment-padding, 0.75rem)'
45 | },
46 | // Avatar
47 | '.uk-comment-avatar': {
48 | height: 'var(--uk-comment-avatar-size, 2.5rem)',
49 | width: 'var(--uk-comment-avatar-size, 2.5rem)',
50 | overflow: 'hidden', // obvious - contain image
51 | borderRadius: 'var(--uk-comment-avatar-radius, 9999px)',
52 | backgroundColor: 'var(--uk-comment-avatar-bg, hsl(var(--muted)))'
53 | },
54 | '.uk-comment-avatar img': {
55 | height: '100%', // obvious - fill container
56 | width: '100%', // obvious - fill container
57 | objectFit: 'cover' // obvious - standard image cover
58 | },
59 | '.uk-comment-list .uk-comment ~ ul > li': {
60 | marginLeft: 'var(--uk-comment-nested-item-margin, 0.75rem)',
61 | marginInlineStart: 'var(--uk-comment-nested-item-margin, 0.75rem)'
62 | }
63 | };
64 |
--------------------------------------------------------------------------------
/src/lib/components/container.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-container': {
3 | display: 'var(--uk-container-display, flow-root)',
4 | boxSizing: 'var(--uk-container-box-sizing, content-box)',
5 | maxWidth: 'var(--uk-container-max-width, 1200px)',
6 | marginLeft: 'var(--uk-container-margin-x, auto)',
7 | marginRight: 'var(--uk-container-margin-x, auto)',
8 | paddingLeft: 'var(--uk-container-padding-x, 1rem)',
9 | paddingRight: 'var(--uk-container-padding-x, 1rem)'
10 | },
11 | '.uk-container > :last-child': {
12 | marginBottom: 'var(--uk-container-last-child-margin, 0)'
13 | },
14 | '.uk-container .uk-container': {
15 | paddingLeft: 'var(--uk-nested-container-padding-x, 0)',
16 | paddingRight: 'var(--uk-nested-container-padding-x, 0)'
17 | },
18 | '.uk-container-xs': {
19 | maxWidth: 'var(--uk-container-xs-max-width, 750px)'
20 | },
21 | '.uk-container-sm': {
22 | maxWidth: 'var(--uk-container-sm-max-width, 900px)'
23 | },
24 | '.uk-container-lg': {
25 | maxWidth: 'var(--uk-container-lg-max-width, 1400px)'
26 | },
27 | '.uk-container-xl': {
28 | maxWidth: 'var(--uk-container-xl-max-width, 1600px)'
29 | },
30 | '.uk-container-expand': {
31 | maxWidth: 'var(--uk-container-expand-max-width, none)'
32 | },
33 | '.uk-container-expand-left': {
34 | marginLeft: 'var(--uk-container-expand-left-margin, 0)'
35 | },
36 | '.uk-container-expand-right': {
37 | marginRight: 'var(--uk-container-expand-right-margin, 0)'
38 | },
39 | '.uk-container-item-padding-remove-left, .uk-container-item-padding-remove-right': {
40 | width: 'var(--uk-container-item-padding-remove-width, calc(100% + 1rem))'
41 | },
42 | '.uk-container-item-padding-remove-left': {
43 | marginLeft: 'var(--uk-container-item-padding-remove-left-margin, -1rem)'
44 | },
45 | '.uk-container-item-padding-remove-right': {
46 | marginRight: 'var(--uk-container-item-padding-remove-right-margin, -1rem)'
47 | }
48 | };
49 |
--------------------------------------------------------------------------------
/src/lib/components/cover.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '[uk-cover]:where(canvas, iframe, svg), [data-uk-cover]:where(canvas, iframe, svg)': {
3 | maxWidth: 'none',
4 | position: 'absolute',
5 | left: '50%',
6 | top: '50%',
7 | '--uk-position-translate-x': '-50%',
8 | '--uk-position-translate-y': '-50%',
9 | transform: 'translate(var(--uk-position-translate-x), var(--uk-position-translate-y))'
10 | },
11 | 'iframe[uk-cover], iframe[data-uk-cover]': {
12 | pointerEvents: 'none'
13 | },
14 | '[uk-cover]:where(img, video), [data-uk-cover]:where(img, video)': {
15 | position: 'absolute',
16 | top: '0',
17 | left: '0',
18 | width: '100%',
19 | height: '100%',
20 | boxSizing: 'border-box',
21 | objectFit: 'cover',
22 | objectPosition: 'center'
23 | },
24 | '.uk-cover-container': {
25 | overflow: 'hidden',
26 | position: 'relative'
27 | }
28 | };
29 |
--------------------------------------------------------------------------------
/src/lib/components/divider.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | "[class*='uk-divider']": {
3 | border: 'none', // Static - core reset
4 | height: 'var(--uk-divider-height, 1px)'
5 | },
6 |
7 | '.uk-hr': {
8 | borderColor: 'var(--uk-hr-color, hsl(var(--border)))'
9 | },
10 |
11 | '.uk-divider-icon': {
12 | position: 'relative', // Static - core positioning
13 | height: 'var(--uk-divider-icon-height, 1.25rem)',
14 | backgroundImage: 'var(--uk-divider-icon-image)',
15 | backgroundRepeat: 'no-repeat', // Static - icon behavior
16 | backgroundPosition: '50% 50%' // Static - icon centering
17 | },
18 |
19 | '.uk-divider-icon::before, .uk-divider-icon::after': {
20 | content: '""', // Static - pseudo element
21 | position: 'absolute', // Static - core positioning
22 | top: '50%', // Static - vertical centering
23 | maxWidth: 'calc(50% - (3.5rem / 2))', // Static - line width calculation
24 | borderBottom: 'var(--uk-divider-icon-line-border, 1px solid hsl(var(--border)))'
25 | },
26 |
27 | '.uk-divider-icon::before': {
28 | right: 'calc(50% + (3.5rem / 2))', // Static - line positioning
29 | width: '100%' // Static - full width
30 | },
31 |
32 | '.uk-divider-icon::after': {
33 | left: 'calc(50% + (3.5rem / 2))', // Static - line positioning
34 | width: '100%' // Static - full width
35 | },
36 |
37 | '.uk-divider-sm': {
38 | lineHeight: '0' // Static - remove line spacing
39 | },
40 |
41 | '.uk-divider-sm::after': {
42 | content: '""', // Static - pseudo element
43 | display: 'inline-block', // Static - layout behavior
44 | width: 'var(--uk-divider-sm-width, 100px)',
45 | maxWidth: '100%', // Static - responsive behavior
46 | borderTop: 'var(--uk-divider-sm-border, 1px solid hsl(var(--border)))',
47 | verticalAlign: 'top', // Static - alignment
48 | borderBottom: 'var(--uk-divider-sm-border, 1px solid hsl(var(--border)))'
49 | },
50 |
51 | '.uk-divider-vertical': {
52 | width: 'max-content', // Static - content fitting
53 | height: 'var(--uk-divider-vertical-height, 100px)',
54 | marginLeft: 'auto', // Static - horizontal centering
55 | marginRight: 'auto', // Static - horizontal centering
56 | borderLeft: 'var(--uk-divider-vertical-border, 1px solid hsl(var(--border)))',
57 | borderBottom: 'var(--uk-divider-vertical-border, 1px solid hsl(var(--border)))'
58 | }
59 | };
60 |
--------------------------------------------------------------------------------
/src/lib/components/dotnav.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | // Base dotnav styles
3 | '.uk-dotnav': {
4 | display: 'flex', // Removed variable - fundamental layout
5 | flexWrap: 'wrap', // Removed variable - fundamental layout
6 | marginLeft: 'var(--uk-dotnav-margin-left, -0.75rem)'
7 | },
8 |
9 | // Dotnav items
10 | '.uk-dotnav > *': {
11 | flex: 'none', // Removed variable - fundamental layout
12 | paddingLeft: 'var(--uk-dotnav-item-padding, 0.75rem)'
13 | },
14 |
15 | // Dotnav dots
16 | '.uk-dotnav > * > *': {
17 | // Layout
18 | display: 'block', // Removed variable - fundamental layout
19 | boxSizing: 'border-box', // Removed variable - fundamental box model
20 | width: 'var(--uk-dotnav-dot-size, 10px)',
21 | height: 'var(--uk-dotnav-dot-size, 10px)', // Using same variable for consistent sizing
22 |
23 | // Visual
24 | border: 'var(--uk-dotnav-dot-border, 1px solid hsl(var(--primary)))', // Combined border properties
25 | borderRadius: '50%', // Removed variable - fundamental shape for dots
26 | backgroundColor: 'var(--uk-dotnav-dot-bg, transparent)',
27 |
28 | // Accessibility
29 | textIndent: '100%', // Removed variable - fundamental accessibility
30 | overflow: 'hidden', // Removed variable - fundamental accessibility
31 | whiteSpace: 'nowrap', // Removed variable - fundamental text behavior
32 |
33 | // Transitions
34 | transition: '0.2s ease-in-out', // Removed variable - fundamental transition
35 | transitionProperty: 'background-color, border-color' // Removed variable - fundamental properties
36 | },
37 |
38 | // States
39 | '.uk-dotnav > * > :hover': {
40 | borderColor: 'var(--uk-dotnav-dot-hover-border, transparent)',
41 | backgroundColor: 'var(--uk-dotnav-dot-hover-bg, hsl(var(--primary)))'
42 | },
43 |
44 | '.uk-dotnav > * > :active': {
45 | borderColor: 'var(--uk-dotnav-dot-active-border, transparent)',
46 | backgroundColor: 'var(--uk-dotnav-dot-active-bg, hsl(var(--primary)))'
47 | },
48 |
49 | '.uk-dotnav > .uk-active > *': {
50 | borderColor: 'var(--uk-dotnav-dot-current-border, transparent)',
51 | backgroundColor: 'var(--uk-dotnav-dot-current-bg, hsl(var(--primary)))'
52 | },
53 |
54 | // Vertical variant
55 | '.uk-dotnav-vertical': {
56 | flexDirection: 'column', // Removed variable - fundamental layout
57 | marginLeft: '0', // Removed variable - fundamental reset
58 | marginTop: 'var(--uk-dotnav-vertical-margin-top, -0.75rem)'
59 | },
60 |
61 | '.uk-dotnav-vertical > *': {
62 | paddingLeft: '0', // Removed variable - fundamental reset
63 | paddingTop: 'var(--uk-dotnav-vertical-item-padding-top, 0.75rem)'
64 | }
65 | };
66 |
--------------------------------------------------------------------------------
/src/lib/components/form/custom-select.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-custom-select-search': {
3 | // Layout
4 | display: 'var(--uk-custom-select-search-display, flex)',
5 | alignItems: 'var(--uk-custom-select-search-align, center)',
6 | padding: 'var(--uk-custom-select-search-padding, 0 0.75rem)'
7 | },
8 |
9 | '.uk-custom-select-search svg': {
10 | // Layout
11 | margin: 'var(--uk-custom-select-search-icon-margin, 0 0.5rem 0 0)',
12 | // Visual
13 | opacity: 'var(--uk-custom-select-search-icon-opacity, 0.5)'
14 | },
15 |
16 | '.uk-custom-select-search input': {
17 | // Layout
18 | width: 'var(--uk-custom-select-search-input-width, 100%)',
19 | padding: 'var(--uk-custom-select-search-input-padding, 0.75rem 0)',
20 | // Visual
21 | backgroundColor: 'transparent',
22 | outline: 'none',
23 |
24 | '&::placeholder': {
25 | color: 'var(--uk-custom-select-search-placeholder-color, hsl(var(--muted-foreground)))'
26 | }
27 | },
28 |
29 | '.uk-custom-select-options': {
30 | // Layout
31 | maxHeight: 'var(--uk-custom-select-options-max-height, 10rem)'
32 | },
33 |
34 | '.uk-custom-select-item-wrapper': {
35 | // Layout
36 | display: 'var(--uk-custom-select-item-wrapper-display, flex)',
37 | flex: 'var(--uk-custom-select-item-wrapper-flex, 1)',
38 | alignItems: 'var(--uk-custom-select-item-wrapper-align, center)'
39 | },
40 |
41 | '.uk-custom-select-item-icon': {
42 | // Layout
43 | margin: 'var(--uk-custom-select-item-icon-margin, 0 0.5rem 0 0)',
44 | flexShrink: 'var(--uk-custom-select-item-icon-shrink, 0)'
45 | },
46 |
47 | '.uk-custom-select-item-text': {
48 | // Layout
49 | flex: 'var(--uk-custom-select-item-text-flex, 1)'
50 | },
51 |
52 | '.uk-custom-select-item-check': {
53 | // Layout
54 | margin: 'var(--uk-custom-select-item-check-margin, 0 0 0 0.5rem)',
55 | flexShrink: 'var(--uk-custom-select-item-check-shrink, 0)'
56 | }
57 | };
58 |
--------------------------------------------------------------------------------
/src/lib/components/form/keyval.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-keyval': {
3 | borderRadius: 'var(--uk-global-radius)',
4 | boxShadow: 'var(--uk-global-shadow)',
5 | borderWidth: '1px',
6 | borderColor: 'hsl(var(--border))'
7 | },
8 | '.uk-keyval-value-wrapper': { width: '100%' },
9 | '.uk-keyval-actions': {
10 | display: 'flex',
11 | flexWrap: 'nowrap',
12 | columnGap: '0.5rem'
13 | }
14 | };
15 |
--------------------------------------------------------------------------------
/src/lib/components/form/rte.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.tiptap p.is-editor-empty:first-child::before': {
3 | content: 'attr(data-placeholder)',
4 | pointerEvents: 'none',
5 | cssFloat: 'left',
6 | height: '0px',
7 | color: 'hsl(var(--muted-foreground))'
8 | },
9 | '.ProseMirror': {
10 | overflow: 'auto',
11 | borderWidth: '1px',
12 | borderColor: 'hsl(var(--input))',
13 | backgroundColor: 'transparent',
14 | padding: '0.5rem',
15 | color: 'hsl(var(--foreground))'
16 | },
17 | '.ProseMirror p:first-child': { marginTop: '0px' },
18 | '.ProseMirror p:last-child': { marginBottom: '0px' },
19 | '.ProseMirror-focused': {
20 | outlineWidth: 'var(--uk-form-focus-outline-width, 0)',
21 | outlineStyle: 'var(--uk-form-focus-outline-style, none)',
22 | outlineOffset: 'var(--uk-form-focus-outline-offset, 0px)',
23 | boxShadow:
24 | 'var(--uk-form-focus-shadow, 0 0 0 0 transparent, 0 0 0 1px hsl(var(--ring)), 0 0 #0000)',
25 | transitionProperty: 'var(--uk-form-focus-transition-property, box-shadow)',
26 | transitionDuration: 'var(--uk-form-focus-transition-duration, 150ms)',
27 | transitionTimingFunction: 'var(--uk-form-focus-transition-timing, ease-in-out)'
28 | },
29 | '.uk-rte': {
30 | boxShadow: 'var(--uk-global-shadow)',
31 | borderRadius: 'var(--uk-global-radius)'
32 | },
33 | '.uk-rte-header': {
34 | borderTopLeftRadius: 'var(--uk-global-radius)',
35 | borderTopRightRadius: 'var(--uk-global-radius)',
36 | display: 'flex',
37 | flexWrap: 'nowrap',
38 | overflow: 'hidden',
39 | borderWidth: '1px',
40 | borderBottomWidth: '0px',
41 | borderColor: 'hsl(var(--border))',
42 | padding: '0.5rem'
43 | },
44 | '.uk-rte-toolbar': {
45 | marginBottom: '-2.5rem',
46 | display: 'flex',
47 | width: '100%',
48 | columnGap: '0.75rem',
49 | overflowX: 'scroll',
50 | paddingBottom: '2.5rem'
51 | },
52 | '.uk-rte-toolbar-group': { display: 'flex', gap: '0.25rem' },
53 | '.uk-rte-toolbar-group button.uk-active': {
54 | backgroundColor: 'hsl(var(--muted))',
55 | color: 'hsl(var(--muted-foreground))'
56 | },
57 | '.uk-rte-toolbar-group a': { cursor: 'pointer' },
58 | '.uk-rte-footer': {
59 | borderBottomRightRadius: 'var(--uk-global-radius)',
60 | borderBottomLeftRadius: 'var(--uk-global-radius)',
61 | borderWidth: '1px',
62 | borderTopWidth: '0px',
63 | borderColor: 'hsl(var(--border))',
64 | padding: '0.5rem',
65 | fontSize: '0.75rem',
66 | lineHeight: '1rem'
67 | },
68 | '.uk-rte-link-close': {
69 | position: 'absolute',
70 | right: '0.5rem',
71 | top: '0.5rem'
72 | }
73 | };
74 |
--------------------------------------------------------------------------------
/src/lib/components/form/tag.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-input-tag': {
3 | // Reset
4 | backgroundColor: 'transparent',
5 |
6 | // Layout
7 | display: 'var(--uk-input-tag-display, flex)',
8 | minHeight: 'var(--uk-input-tag-min-height, 2.5rem)',
9 | padding: 'var(--uk-input-tag-padding, 0.5rem)',
10 | gap: 'var(--uk-input-tag-gap, 0.25rem)',
11 | flexWrap: 'var(--uk-input-tag-wrap, wrap)',
12 | alignItems: 'var(--uk-input-tag-align, center)',
13 |
14 | // Visual
15 | boxShadow: 'var(--uk-input-tag-shadow, var(--uk-form-input-shadow))',
16 | borderRadius: 'var(--uk-input-tag-radius, var(--uk-form-input-radius))',
17 | borderWidth: 'var(--uk-input-tag-border-width, 1px)',
18 | borderStyle: 'var(--uk-input-tag-border-style, solid)',
19 | borderColor: 'var(--uk-input-tag-border-color, hsl(var(--input)))',
20 |
21 | // Theme
22 | '--focus-shadow-color': 'hsl(var(--ring))',
23 |
24 | // Focus state
25 | '&:has(input:focus)': {
26 | outlineWidth: 'var(--uk-input-tag-focus-outline-width, 2px)',
27 | outlineStyle: 'var(--uk-input-tag-focus-outline-style, solid)',
28 | outlineColor: 'var(--uk-input-tag-focus-outline-color, transparent)',
29 | outlineOffset: 'var(--uk-input-tag-focus-outline-offset, 2px)',
30 | boxShadow:
31 | 'var(--uk-input-tag-focus-shadow, 0 0 0 0 transparent, 0 0 0 1px var(--focus-shadow-color), 0 0 #0000)'
32 | }
33 | },
34 |
35 | '.uk-input-tag.uk-disabled': {
36 | opacity: 'var(--uk-input-tag-disabled-opacity, 0.5)'
37 | },
38 |
39 | '.uk-input-tag input': {
40 | // Reset
41 | backgroundColor: 'transparent',
42 | outline: 'none',
43 |
44 | // Layout
45 | minHeight: 'var(--uk-input-tag-input-min-height, 1.75rem)',
46 | flex: 'var(--uk-input-tag-input-flex, 1)',
47 | padding: 'var(--uk-input-tag-input-padding, 0 0.25rem)',
48 |
49 | // Typography
50 | color: 'var(--uk-input-tag-input-color, hsl(var(--foreground)))',
51 | '&::placeholder': {
52 | color: 'var(--uk-input-tag-placeholder-color, hsl(var(--muted-foreground)))'
53 | }
54 | },
55 |
56 | '.uk-input-tag.uk-form-destructive': {
57 | '--focus-shadow-color': 'hsl(var(--destructive))'
58 | }
59 | };
60 |
--------------------------------------------------------------------------------
/src/lib/components/icon.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | // Base icon styles
3 | '.uk-icon': {
4 | display: 'inline-flex', // Removed variable - fundamental layout
5 | color: 'var(--uk-icon-color, inherit)',
6 | fill: 'var(--uk-icon-fill, currentcolor)'
7 | },
8 |
9 | // Button behavior
10 | 'button.uk-icon:not(:disabled)': {
11 | cursor: 'pointer' // Removed variable - fundamental button behavior
12 | },
13 |
14 | // Browser reset - keep static vendor prefix rule as is
15 | '.uk-icon::-moz-focus-inner': {
16 | border: '0',
17 | padding: '0'
18 | },
19 |
20 | // SVG fill and stroke handling
21 | ".uk-icon:not(.uk-preserve) [fill*='#']:not(.uk-preserve)": {
22 | fill: 'var(--uk-icon-fill-color, currentcolor)'
23 | },
24 |
25 | ".uk-icon:not(.uk-preserve) [stroke*='#']:not(.uk-preserve)": {
26 | stroke: 'var(--uk-icon-stroke-color, currentcolor)'
27 | },
28 |
29 | // Icon positioning
30 | '.uk-icon > *': {
31 | transform: 'var(--uk-icon-transform, translate(0, 0))'
32 | },
33 |
34 | // Image icons
35 | '.uk-icon-image': {
36 | // Dimensions
37 | width: 'var(--uk-icon-image-size, 1.25rem)',
38 | height: 'var(--uk-icon-image-size, 1.25rem)', // Using same variable for consistent sizing
39 |
40 | // Keep static properties that don't need customization
41 | backgroundPosition: '50% 50%',
42 | backgroundRepeat: 'no-repeat',
43 | backgroundSize: 'contain',
44 | verticalAlign: 'middle',
45 | objectFit: 'scale-down',
46 | maxWidth: 'none'
47 | }
48 | };
49 |
--------------------------------------------------------------------------------
/src/lib/components/label.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-label': {
3 | // Layout
4 | display: 'inline-flex', // Removed variable - fundamental layout
5 | alignItems: 'center', // Removed variable - fundamental layout
6 | padding: 'var(--uk-label-padding, 0.125rem 0.625rem)',
7 |
8 | // Typography
9 | fontSize: 'var(--uk-label-font-size, var(--uk-global-font-size-s))',
10 | lineHeight: 'var(--uk-label-leading, var(--uk-global-leading-s))',
11 | fontWeight: 'var(--uk-label-font-weight, 600)',
12 |
13 | // Visual
14 | borderRadius: 'var(--uk-label-radius, var(--uk-global-radius))',
15 | boxShadow: 'var(--uk-label-shadow, var(--uk-global-shadow))',
16 | border: 'var(--uk-label-border, 1px solid hsl(var(--border)))',
17 | backgroundColor: 'var(--uk-label-bg, transparent)',
18 | color: 'var(--uk-label-color, hsl(var(--foreground)))'
19 | },
20 |
21 | '.uk-label:hover': {
22 | transitionProperty: 'background-color', // Removed variable - fundamental transition
23 | transitionDuration: 'var(--uk-label-hover-duration, 150ms)',
24 | transitionTimingFunction: 'ease-in-out', // Removed variable - fundamental timing
25 | opacity: 'var(--uk-label-hover-opacity, 0.8)'
26 | },
27 |
28 | // Variants using CSS variable reassignment pattern
29 | '.uk-label-primary': {
30 | '--uk-label-border': '1px solid hsl(var(--primary))',
31 | '--uk-label-bg': 'hsl(var(--primary))',
32 | '--uk-label-color': 'hsl(var(--primary-foreground))'
33 | },
34 |
35 | '.uk-label-secondary': {
36 | '--uk-label-border': '1px solid hsl(var(--secondary))',
37 | '--uk-label-bg': 'hsl(var(--secondary))',
38 | '--uk-label-color': 'hsl(var(--secondary-foreground))'
39 | },
40 |
41 | '.uk-label-destructive': {
42 | '--uk-label-border': '1px solid hsl(var(--destructive))',
43 | '--uk-label-bg': 'hsl(var(--destructive))',
44 | '--uk-label-color': 'hsl(var(--destructive-foreground))'
45 | }
46 | };
47 |
--------------------------------------------------------------------------------
/src/lib/components/leader.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-leader': {
3 | overflow: 'hidden' // Fundamental - required for text truncation
4 | },
5 |
6 | '.uk-leader-fill::after': {
7 | // Layout
8 | display: 'inline-block', // Fundamental - required for content placement
9 | marginLeft: 'var(--uk-leader-spacing, 1rem)', // Keep as variable for spacing customization
10 | width: '0', // Fundamental - required for dynamic filling
11 |
12 | // Content
13 | content: 'attr(data-fill)', // Fundamental - required for leader dots
14 | whiteSpace: 'nowrap' // Fundamental - required for proper filling
15 | },
16 |
17 | '.uk-leader-fill.uk-leader-hide::after': {
18 | display: 'none' // Fundamental - required for hiding behavior
19 | }
20 | };
21 |
--------------------------------------------------------------------------------
/src/lib/components/lightbox.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-lightbox': {
3 | // Fundamental overlay positioning
4 | display: 'none',
5 | position: 'fixed',
6 | top: '0',
7 | right: '0',
8 | bottom: '0',
9 | left: '0',
10 |
11 | // Customizable properties
12 | zIndex: 'var(--uk-lightbox-z-index, 1010)',
13 | opacity: '0',
14 | transition: 'var(--uk-lightbox-transition, opacity 0.15s linear)',
15 | touchAction: 'var(--uk-lightbox-touch-action, pinch-zoom)',
16 | background: 'var(--uk-lightbox-bg, hsl(var(--background)))'
17 | },
18 |
19 | '.uk-lightbox.uk-open': {
20 | display: 'block', // Fundamental state
21 | opacity: '1' // Fundamental state
22 | },
23 |
24 | '.uk-lightbox-page': {
25 | overflow: 'hidden' // Fundamental behavior
26 | },
27 |
28 | '.uk-lightbox-items > *': {
29 | // Fundamental positioning
30 | position: 'absolute',
31 | top: '0',
32 | right: '0',
33 | bottom: '0',
34 | left: '0',
35 | display: 'none',
36 | justifyContent: 'center',
37 | alignItems: 'flex-start',
38 |
39 | // Customizable properties
40 | willChange: 'var(--uk-lightbox-will-change, transform, opacity)',
41 | overflow: 'var(--uk-lightbox-items-overflow, auto)'
42 | },
43 |
44 | '.uk-lightbox-items > .uk-active': {
45 | display: 'flex' // Fundamental state
46 | },
47 |
48 | '.uk-lightbox-items-fit > *': {
49 | alignItems: 'center' // Fundamental alignment
50 | },
51 |
52 | '.uk-lightbox-items-fit > * > *': {
53 | maxWidth: '100vw', // Fundamental constraint
54 | maxHeight: '100vh' // Fundamental constraint
55 | },
56 |
57 | '.uk-lightbox-items-fit > * > :not(iframe)': {
58 | width: 'auto', // Fundamental sizing
59 | height: 'auto' // Fundamental sizing
60 | },
61 |
62 | '.uk-lightbox-items.uk-lightbox-items-fit .uk-lightbox-zoom:hover': {
63 | cursor: 'zoom-in' // Fundamental behavior
64 | },
65 |
66 | '.uk-lightbox-items:not(.uk-lightbox-items-fit) .uk-lightbox-zoom:hover': {
67 | cursor: 'zoom-out' // Fundamental behavior
68 | },
69 |
70 | '.uk-lightbox-thumbnav-vertical :where(img, video)': {
71 | maxWidth: 'var(--uk-lightbox-thumb-max-width, 100px)'
72 | },
73 |
74 | '.uk-lightbox-thumbnav:not(.uk-lightbox-thumbnav-vertical) :where(img, video)': {
75 | maxHeight: 'var(--uk-lightbox-thumb-max-height, 100px)'
76 | },
77 |
78 | '.uk-lightbox-thumbnav:empty, .uk-lightbox-dotnav:empty': {
79 | display: 'none' // Fundamental state
80 | },
81 |
82 | '.uk-lightbox-caption': {
83 | backgroundColor: 'var(--uk-lightbox-caption-bg, hsl(var(--secondary)))',
84 | padding: 'var(--uk-lightbox-caption-padding, 1rem)',
85 | color: 'var(--uk-lightbox-caption-color, hsl(var(--secondary-foreground)))'
86 | },
87 |
88 | '.uk-lightbox-caption:empty': {
89 | display: 'none' // Fundamental state
90 | },
91 |
92 | '.uk-lightbox-iframe': {
93 | width: 'var(--uk-lightbox-iframe-width, 80%)',
94 | height: 'var(--uk-lightbox-iframe-height, 80%)'
95 | }
96 | };
97 |
--------------------------------------------------------------------------------
/src/lib/components/link.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | // Muted variant
3 | 'a.uk-link-muted, .uk-link-muted a, .uk-link-toggle .uk-link-muted': {
4 | fontWeight: 'var(--uk-link-muted-font-weight, 500)',
5 | color: 'var(--uk-link-muted-color, hsl(var(--muted-foreground)))',
6 | textDecorationLine: 'underline', // Fundamental link behavior
7 | textUnderlineOffset: 'var(--uk-link-underline-offset, 4px)'
8 | },
9 |
10 | // Text variant hover state
11 | 'a.uk-link-text:hover, .uk-link-text a:hover, .uk-link-toggle:hover .uk-link-text': {
12 | textDecorationLine: 'underline', // Fundamental link behavior
13 | textUnderlineOffset: 'var(--uk-link-underline-offset, 4px)'
14 | },
15 |
16 | // Reset variant (no variables needed - purpose is to reset)
17 | 'a.uk-link-reset, .uk-link-reset a': {
18 | textDecoration: 'none !important', // Fundamental reset
19 | fontWeight: '400 !important' // Fundamental reset
20 | },
21 |
22 | // Toggle variant (no variables needed - functional class)
23 | '.uk-link-toggle': {
24 | textDecoration: 'none !important' // Fundamental behavior
25 | },
26 |
27 | // Base link style
28 | '.uk-link': {
29 | fontWeight: 'var(--uk-link-font-weight, 500)',
30 | textDecorationLine: 'underline', // Fundamental link behavior
31 | textUnderlineOffset: 'var(--uk-link-underline-offset, 4px)'
32 | }
33 | };
34 |
--------------------------------------------------------------------------------
/src/lib/components/list.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-list > *': {
3 | MozColumnBreakInside: 'avoid',
4 | breakInside: 'avoid-column'
5 | },
6 | '.uk-list > * > :last-child': { marginBottom: '0' },
7 | '.uk-list > :nth-child(n+2), .uk-list > * > ul': {
8 | marginTop: 'var(--uk-list-item-margin-top, 0.5rem)'
9 | },
10 | '.uk-list-disc, .uk-list-circle, .uk-list-square, .uk-list-decimal, .uk-list-hyphen': {
11 | paddingLeft: 'var(--uk-list-indent, 32px)'
12 | },
13 | '.uk-list-disc': { listStyleType: 'disc' },
14 | '.uk-list-circle': { listStyleType: 'circle' },
15 | '.uk-list-square': { listStyleType: 'square' },
16 | '.uk-list-decimal': { listStyleType: 'decimal' },
17 | '.uk-list-hyphen': { listStyleType: "'– '" },
18 | '.uk-list-muted > ::marker': {
19 | color: 'var(--uk-list-marker-muted-color, hsl(var(--muted-foreground)))'
20 | },
21 | '.uk-list-primary > ::marker': {
22 | color: 'var(--uk-list-marker-primary-color, hsl(var(--primary)))'
23 | },
24 | '.uk-list-secondary > ::marker': {
25 | color: 'var(--uk-list-marker-secondary-color, hsl(var(--secondary-foreground)))'
26 | },
27 | '.uk-list-bullet > *': {
28 | position: 'relative',
29 | paddingLeft: 'var(--uk-list-bullet-indent, 32px)'
30 | },
31 | '.uk-list-bullet > ::before': {
32 | content: '""',
33 | position: 'absolute',
34 | top: '0',
35 | left: '0',
36 | width: 'var(--uk-list-bullet-width, 32px)',
37 | height: 'var(--uk-list-bullet-height, 1.5em)',
38 | backgroundImage: 'var(--uk-list-bullet-image)',
39 | backgroundRepeat: 'no-repeat',
40 | backgroundPosition: '50% 50%'
41 | },
42 | '.uk-list-divider > :nth-child(n+2)': {
43 | marginTop: 'var(--uk-list-divider-item-margin-top, 0.5rem)',
44 | borderTopWidth: 'var(--uk-list-divider-border-width, 1px)',
45 | borderColor: 'var(--uk-list-divider-border-color, hsl(var(--border)))',
46 | paddingTop: 'var(--uk-list-divider-item-padding-top, 0.5rem)'
47 | },
48 | '.uk-list-striped > *': { padding: 'var(--uk-list-striped-item-padding, 0.5rem)' },
49 | '.uk-list-striped > *:nth-of-type(odd)': {
50 | borderTopWidth: 'var(--uk-list-striped-border-width, 1px)', // Shorthand variable
51 | borderBottomWidth: 'var(--uk-list-striped-border-width, 1px)', // Shorthand variable
52 | borderColor: 'var(--uk-list-striped-border-color, hsl(var(--border)))'
53 | },
54 | '.uk-list-striped > :nth-of-type(odd)': {
55 | backgroundColor: 'var(--uk-list-striped-background-color, hsl(var(--muted) / 0.5))'
56 | },
57 | '.uk-list-striped > :nth-child(n+2)': { marginTop: '0' }
58 | };
59 |
--------------------------------------------------------------------------------
/src/lib/components/placeholder.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | // Placeholder
3 | '.uk-placeholder': {
4 | marginBottom: 'var(--uk-placeholder-margin-bottom, 1.25rem)',
5 | padding: 'var(--uk-placeholder-padding, 2rem 2rem)',
6 | background: 'var(--uk-placeholder-background, transparent)',
7 | border: 'var(--uk-placeholder-border, 1px dashed)', // Shorthand variable for border
8 | borderColor: 'var(--uk-placeholder-border-color, hsl(var(--border)))' // borderColor is already using a variable, encapsulate it too for component level customization
9 | },
10 | '.uk-placeholder > :last-child': {
11 | marginBottom: '0' // obvious value, keep static
12 | }
13 | };
14 |
--------------------------------------------------------------------------------
/src/lib/components/print.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '@media print': {
3 | '*,*::before,*::after': {
4 | background: 'transparent !important',
5 | color: 'black !important',
6 | boxShadow: 'none !important',
7 | textShadow: 'none !important'
8 | },
9 | 'a,a:visited': {
10 | textDecoration: 'underline'
11 | },
12 | 'pre,blockquote': {
13 | border: '1px solid #999',
14 | pageBreakInside: 'avoid'
15 | },
16 | thead: {
17 | display: 'table-header-group'
18 | },
19 | 'tr,img': {
20 | pageBreakInside: 'avoid'
21 | },
22 | img: {
23 | maxWidth: '100% !important'
24 | },
25 | '@page': {
26 | margin: '0.5cm'
27 | },
28 | 'p,h2,h3': {
29 | orphans: '3',
30 | widows: '3'
31 | },
32 | 'h2,h3': {
33 | pageBreakAfter: 'avoid'
34 | }
35 | }
36 | };
37 |
--------------------------------------------------------------------------------
/src/lib/components/progress.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | // Progress
3 | '.uk-progress': {
4 | verticalAlign: 'baseline', // obvious value
5 | display: 'block', // obvious value
6 | width: '100%', // obvious value
7 | border: '0', // obvious value
8 | marginBottom: 'var(--uk-progress-margin-bottom, 1.25rem)',
9 | height: 'var(--uk-progress-height, 1rem)',
10 | borderRadius: 'var(--uk-progress-radius, 500px)',
11 | overflow: 'hidden', // obvious value
12 | backgroundColor: 'var(--uk-progress-track-color, hsl(var(--primary) / 0.2))' // Renamed for clarity - track color
13 | },
14 | '.uk-progress::-webkit-progress-bar': {
15 | backgroundColor: 'transparent' // browser specific, obvious value
16 | },
17 | '.uk-progress::-webkit-progress-value': {
18 | transition: 'var(--uk-progress-transition, width 0.6s ease)', // Shorthand variable for transition
19 | backgroundColor: 'var(--uk-progress-value-color, hsl(var(--primary)))' // Renamed for clarity - value color
20 | },
21 | '.uk-progress::-moz-progress-bar': {
22 | transition: 'var(--uk-progress-transition, width 0.6s ease)', // Reusing the same variable for consistency
23 | backgroundColor: 'var(--uk-progress-value-color, hsl(var(--primary)))' // Reusing the same variable for consistency
24 | }
25 | };
26 |
--------------------------------------------------------------------------------
/src/lib/components/sortable.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-sortable': {
3 | position: 'relative' // obvious value, required for positioning sortable items
4 | },
5 | '.uk-sortable > :last-child': {
6 | marginBottom: '0' // obvious value, remove bottom margin from last child
7 | },
8 | '.uk-sortable-drag': {
9 | position: 'fixed !important', // important for dragging functionality, obvious value
10 | zIndex: 'var(--uk-sortable-drag-z-index, 1050) !important', // Customizable z-index, important for stacking above other elements
11 | pointerEvents: 'none' // obvious value, prevent interaction with dragged element
12 | },
13 | '.uk-sortable-placeholder': {
14 | opacity: 'var(--uk-sortable-placeholder-opacity, 0)', // Customizable placeholder opacity, default to fully transparent
15 | pointerEvents: 'none' // obvious value, placeholder should not be interactive
16 | },
17 | '.uk-sortable-empty': {
18 | minHeight: 'var(--uk-sortable-empty-min-height, 3.5rem)' // Customizable minimum height for empty sortable area
19 | },
20 | '.uk-sortable-handle:hover': {
21 | cursor: 'var(--uk-sortable-handle-hover-cursor, move)' // Customizable cursor on handle hover, default to 'move'
22 | }
23 | };
24 |
--------------------------------------------------------------------------------
/src/lib/components/spinner.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-spinner > *': {
3 | animation: 'uk-spinner-rotate 1.4s linear infinite'
4 | },
5 | '@keyframes uk-spinner-rotate': {
6 | '0%': {
7 | transform: 'rotate(0deg)'
8 | },
9 | '100%': {
10 | transform: 'rotate(270deg)'
11 | }
12 | },
13 | '.uk-spinner > * > *': {
14 | strokeDasharray: '88px',
15 | strokeDashoffset: '0',
16 | transformOrigin: 'center',
17 | animation: 'uk-spinner-dash 1.4s ease-in-out infinite',
18 | strokeWidth: '1',
19 | strokeLinecap: 'round'
20 | },
21 | '@keyframes uk-spinner-dash': {
22 | '0%': {
23 | strokeDashoffset: '88px'
24 | },
25 | '50%': {
26 | strokeDashoffset: '22px',
27 | transform: 'rotate(135deg)'
28 | },
29 | '100%': {
30 | strokeDashoffset: '88px',
31 | transform: 'rotate(450deg)'
32 | }
33 | },
34 | '.uk-spinner': {}
35 | };
36 |
--------------------------------------------------------------------------------
/src/lib/components/sticky.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-sticky': {
3 | position: 'relative',
4 | zIndex: '980',
5 | boxSizing: 'border-box'
6 | },
7 | '.uk-sticky-fixed': {
8 | margin: '0 !important',
9 | WebkitBackfaceVisibility: 'hidden',
10 | backfaceVisibility: 'hidden'
11 | },
12 | ".uk-sticky[class*='uk-anmt-']": {
13 | animationDuration: '0.2s'
14 | },
15 | '.uk-sticky.uk-anmt-reverse': {
16 | animationDuration: '0.2s'
17 | },
18 | '.uk-sticky-placeholder': {
19 | pointerEvents: 'none'
20 | }
21 | };
22 |
--------------------------------------------------------------------------------
/src/lib/components/svg.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | ".uk-svg, .uk-svg:not(.uk-preserve) [fill*='#']:not(.uk-preserve)": {
3 | fill: 'currentcolor'
4 | },
5 | ".uk-svg:not(.uk-preserve) [stroke*='#']:not(.uk-preserve)": {
6 | stroke: 'currentcolor'
7 | },
8 | '.uk-svg': {
9 | transform: 'translate(0, 0)'
10 | }
11 | };
12 |
--------------------------------------------------------------------------------
/src/lib/components/switcher.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-switcher > :not(.uk-active)': {
3 | display: 'none'
4 | }
5 | };
6 |
--------------------------------------------------------------------------------
/src/lib/components/tag.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | // Tags
3 | '.uk-tag': {
4 | // Layout
5 | display: 'var(--uk-tag-display, inline-flex)',
6 | alignItems: 'var(--uk-tag-align, center)',
7 | minHeight: 'var(--uk-tag-height, 1.75rem)',
8 | padding: 'var(--uk-tag-padding, 0.25rem 0.5rem)',
9 | gap: 'var(--uk-tag-gap, 0.5rem)',
10 |
11 | // Typography
12 | fontSize: 'var(--uk-tag-font-size, var(--uk-global-font-size-s))',
13 | lineHeight: 'var(--uk-tag-leading, var(--uk-global-leading-s))',
14 |
15 | // Visual
16 | borderRadius: 'var(--uk-tag-radius, var(--uk-global-radius-s))',
17 | backgroundColor: 'var(--uk-tag-bg, transparent)',
18 | color: 'var(--uk-tag-color, hsl(var(--foreground)))',
19 |
20 | // Reset transition
21 | transition: 'none'
22 | },
23 |
24 | '.uk-tag:hover': {
25 | transitionProperty: 'background-color', // Removed variable - fundamental transition
26 | transitionDuration: 'var(--uk-tag-hover-duration, 150ms)',
27 | transitionTimingFunction: 'ease-in-out', // Removed variable - fundamental timing
28 | opacity: 'var(--uk-tag-hover-opacity, 0.8)'
29 | },
30 |
31 | // Variants
32 | '.uk-tag-primary': {
33 | '--uk-tag-bg': 'hsl(var(--primary))',
34 | '--uk-tag-color': 'hsl(var(--primary-foreground))'
35 | },
36 | '.uk-tag-primary:hover': {
37 | '--uk-tag-bg': 'hsl(var(--primary) / 0.8)'
38 | },
39 | '.uk-tag-secondary': {
40 | '--uk-tag-bg': 'hsl(var(--secondary))',
41 | '--uk-tag-color': 'hsl(var(--secondary-foreground))'
42 | },
43 | '.uk-tag-secondary:hover': {
44 | '--uk-tag-bg': 'hsl(var(--secondary) / 0.8)'
45 | },
46 | '.uk-tag-destructive': {
47 | '--uk-tag-bg': 'hsl(var(--destructive))',
48 | '--uk-tag-color': 'hsl(var(--destructive-foreground))'
49 | },
50 | '.uk-tag-destructive:hover': {
51 | '--uk-tag-bg': 'hsl(var(--destructive) / 0.8)'
52 | }
53 | };
54 |
--------------------------------------------------------------------------------
/src/lib/components/thumbnav.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-thumbnav': {
3 | display: 'flex', // obvious value, layout property
4 | flexWrap: 'wrap', // obvious value, layout property
5 | margin: '0', // reset, obvious value
6 | padding: '0', // reset, obvious value
7 | listStyle: 'none', // reset, obvious value for lists
8 | marginLeft: 'var(--uk-thumbnav-margin-horizontal, -1rem)' // Customizable horizontal margin for spacing
9 | },
10 | '.uk-thumbnav > *': {
11 | paddingLeft: 'var(--uk-thumbnav-item-padding-horizontal, 1rem)' // Customizable horizontal padding for item spacing, consistent with container margin
12 | },
13 | '.uk-thumbnav > * > *': {
14 | display: 'inline-block', // obvious value, layout property
15 | position: 'relative' // obvious value, for positioning pseudo-element
16 | },
17 | '.uk-thumbnav > * > *::after': {
18 | content: "''", // required for pseudo-element, obvious value
19 | position: 'absolute', // required for overlay, obvious value
20 | top: '0', // position fill, obvious value
21 | bottom: '0', // position fill, obvious value
22 | left: '0', // position fill, obvious value
23 | right: '0', // position fill, obvious value
24 | backgroundImage:
25 | 'var(--uk-thumbnav-overlay-background, linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.4)))', // Customizable overlay gradient
26 | transition: 'var(--uk-thumbnav-overlay-transition, opacity 0.1s ease-in-out)' // Customizable overlay transition
27 | },
28 | '.uk-thumbnav > * > :hover::after': {
29 | opacity: 'var(--uk-thumbnav-overlay-hover-opacity, 0)' // Customizable overlay opacity on hover
30 | },
31 | '.uk-thumbnav > .uk-active > *::after': {
32 | opacity: 'var(--uk-thumbnav-overlay-active-opacity, 0)' // Customizable overlay opacity on active state
33 | },
34 | '.uk-thumbnav-vertical': {
35 | flexDirection: 'column', // obvious value, layout change for vertical
36 | marginLeft: 'var(--uk-thumbnav-vertical-margin-horizontal, 0)', // Customizable horizontal margin reset for vertical layout
37 | marginTop: 'var(--uk-thumbnav-margin-vertical, -1rem)' // Customizable vertical margin for vertical spacing
38 | },
39 | '.uk-thumbnav-vertical > *': {
40 | paddingLeft: '0', // reset horizontal padding for vertical layout, obvious value
41 | paddingTop: 'var(--uk-thumbnav-item-padding-vertical, 1rem)' // Customizable vertical padding for item spacing in vertical layout
42 | }
43 | };
44 |
--------------------------------------------------------------------------------
/src/lib/components/tooltip.ts:
--------------------------------------------------------------------------------
1 | export default {
2 | '.uk-tooltip': {
3 | // Layout
4 | display: 'none', // Removed variable - fundamental behavior
5 | position: 'absolute', // Removed variable - fundamental positioning
6 | zIndex: 'var(--uk-tooltip-z-index, 1030)',
7 | top: 'var(--uk-tooltip-top, 0)',
8 | maxWidth: 'var(--uk-tooltip-max-width, 208px)',
9 | padding: 'var(--uk-tooltip-padding, 0.375rem 0.75rem)',
10 |
11 | // Typography
12 | fontSize: 'var(--uk-tooltip-font-size, var(--uk-global-font-size-s))',
13 | lineHeight: 'var(--uk-tooltip-leading, var(--uk-global-leading-s))',
14 |
15 | // Visual
16 | borderRadius: 'var(--uk-tooltip-radius, var(--uk-global-radius))',
17 | backgroundColor: 'var(--uk-tooltip-bg, hsl(var(--primary)))',
18 | color: 'var(--uk-tooltip-color, hsl(var(--primary-foreground)))',
19 |
20 | // Position offset variables - keep as is per rule #4
21 | '--uk-position-offset': '10px',
22 | '--uk-position-viewport-offset': '8px'
23 | },
24 |
25 | '.uk-tooltip.uk-active': {
26 | display: 'block' // Removed variable - fundamental behavior
27 | }
28 | };
29 |
--------------------------------------------------------------------------------
/src/lib/merger.ts:
--------------------------------------------------------------------------------
1 | import merge from 'lodash/merge.js';
2 | import type { Components, CSSRuleObject } from './types.js';
3 |
4 | export default (options: { palettes: CSSRuleObject; components: Components }): CSSRuleObject => {
5 | const { palettes, components } = options;
6 |
7 | const rules: CSSRuleObject = {};
8 |
9 | for (const key in components) {
10 | if (Object.prototype.hasOwnProperty.call(components, key)) {
11 | merge(rules, components[key]);
12 | }
13 | }
14 |
15 | return { ...palettes, ...rules };
16 | };
17 |
--------------------------------------------------------------------------------
/src/lib/plugin-vite.ts:
--------------------------------------------------------------------------------
1 | import type { ResolvedConfig } from 'vite';
2 | import fs, { readFileSync } from 'fs';
3 | import path from 'path';
4 | import merge from 'lodash/merge.js';
5 | import { fileURLToPath } from 'url';
6 | import { preflight } from './components/index.js';
7 | import { defaults, palettes, components } from './context.js';
8 | import postcssJs from 'postcss-js';
9 | import postcss from 'postcss';
10 | import type { Context, CSSRuleObject, Options } from './types.js';
11 | import merger from './merger.js';
12 |
13 | function css(rules: { [key: string]: any }): string {
14 | const processor = postcss([]);
15 |
16 | return processor.process(rules, { parser: postcssJs.parse }).css;
17 | }
18 |
19 | export default function customPalettePlugin(options: Options): any {
20 | let config: ResolvedConfig;
21 |
22 | return {
23 | name: 'vite-plugin-franken',
24 | configResolved(resolvedConfig: ResolvedConfig) {
25 | config = resolvedConfig;
26 |
27 | try {
28 | const pkgJson = JSON.parse(readFileSync('package.json', 'utf-8'));
29 |
30 | const tailwindVersion =
31 | pkgJson.dependencies?.tailwindcss || pkgJson.devDependencies?.tailwindcss;
32 |
33 | if (tailwindVersion?.startsWith('^4.') && options?.preflight) {
34 | console.warn(
35 | '\n[@franken-ui/ui] Warning: Tailwind CSS v4 detected in your project.' +
36 | '\nYou may want to disable preflight in Franken UI since Tailwind v4' +
37 | '\nalready includes modern CSS reset styles.\n'
38 | );
39 | }
40 | } catch (error) {}
41 | },
42 | buildStart() {
43 | let rules = options?.preflight ? { ...preflight } : {};
44 |
45 | let context: Context = {
46 | defaults,
47 | palettes: palettes(options),
48 | components
49 | };
50 |
51 | if (options.extensions) {
52 | for (const [plugin, config] of options.extensions) {
53 | context = plugin(context, config);
54 | }
55 | }
56 |
57 | // merged rules of palettes and components
58 | const r: CSSRuleObject = merger({
59 | palettes: context.palettes,
60 | components: context.components
61 | });
62 |
63 | rules = merge(rules, context.defaults, r);
64 |
65 | const __dirname = path.dirname(fileURLToPath(import.meta.url));
66 | const outputPath = path.join(__dirname, '/css/franken-ui.css');
67 |
68 | fs.mkdirSync(path.dirname(outputPath), { recursive: true });
69 | fs.writeFileSync(outputPath, css(rules));
70 | }
71 | };
72 | }
73 |
--------------------------------------------------------------------------------
/src/lib/postcss/combine-duplicated-selectors.cjs:
--------------------------------------------------------------------------------
1 | module.exports = require('postcss-combine-duplicated-selectors');
2 |
--------------------------------------------------------------------------------
/src/lib/postcss/sort-media-queries.cjs:
--------------------------------------------------------------------------------
1 | module.exports = require('postcss-sort-media-queries');
2 |
--------------------------------------------------------------------------------
/src/lib/shadcn-ui/preset-quick.ts:
--------------------------------------------------------------------------------
1 | import defaultTheme from 'tailwindcss/defaultTheme.js';
2 | import ui from '../index.js';
3 | import type { Options } from '../types.js';
4 |
5 | export default function (options: Options = {}) {
6 | return {
7 | darkMode: 'class',
8 | theme: {
9 | extend: {
10 | colors: {
11 | background: 'hsl(var(--background))',
12 | foreground: 'hsl(var(--foreground))',
13 | muted: 'hsl(var(--muted))',
14 | 'muted-foreground': 'hsl(var(--muted-foreground))',
15 | card: 'hsl(var(--card))',
16 | 'card-foreground': 'hsl(var(--card-foreground))',
17 | popover: 'hsl(var(--popover))',
18 | 'popover-foreground': 'hsl(var(--popover-foreground))',
19 | border: 'hsl(var(--border))',
20 | input: 'hsl(var(--input))',
21 | primary: 'hsl(var(--primary))',
22 | 'primary-foreground': 'hsl(var(--primary-foreground))',
23 | secondary: 'hsl(var(--secondary))',
24 | 'secondary-foreground': 'hsl(var(--secondary-foreground))',
25 | accent: 'hsl(var(--accent))',
26 | 'accent-foreground': 'hsl(var(--accent-foreground))',
27 | destructive: 'hsl(var(--destructive))',
28 | 'destructive-foreground': 'hsl(var(--destructive-foreground))',
29 | ring: 'hsl(var(--ring))'
30 | },
31 | fontFamily: {
32 | 'geist-sans': ['Geist Sans', ...defaultTheme.fontFamily.sans],
33 | 'geist-mono': ['Geist Mono', ...defaultTheme.fontFamily.mono]
34 | },
35 | screens: {
36 | 'max-sm': { max: '640px' },
37 | 'max-md': { max: '768px' },
38 | 'max-lg': { max: '1024px' },
39 | 'max-xl': { max: '1280px' }
40 | }
41 | }
42 | },
43 | plugins: [ui(options)]
44 | };
45 | }
46 |
--------------------------------------------------------------------------------
/src/lib/types.ts:
--------------------------------------------------------------------------------
1 | export interface RecursiveKeyValuePair {
2 | [key: string]: V | RecursiveKeyValuePair;
3 | }
4 |
5 | export type CSSRuleObject = RecursiveKeyValuePair;
6 |
7 | export type Colors = {
8 | '--background': string;
9 | '--foreground': string;
10 | '--muted': string;
11 | '--muted-foreground': string;
12 | '--popover': string;
13 | '--popover-foreground': string;
14 | '--card': string;
15 | '--card-foreground': string;
16 | '--border': string;
17 | '--input': string;
18 | '--primary': string;
19 | '--primary-foreground': string;
20 | '--secondary': string;
21 | '--secondary-foreground': string;
22 | '--accent': string;
23 | '--accent-foreground': string;
24 | '--destructive': string;
25 | '--destructive-foreground': string;
26 | '--ring': string;
27 | };
28 |
29 | export type Palette = {
30 | [key: string]: Colors;
31 | };
32 |
33 | export type Options = {
34 | preflight?: boolean;
35 | customPalette?: Palette;
36 | extensions?: Extensions;
37 | };
38 |
39 | const components = [
40 | 'accordion',
41 | 'alert',
42 | 'animation',
43 | 'badge',
44 | 'breadcrumb',
45 | 'button',
46 | 'card',
47 | 'chart',
48 | 'cmd',
49 | 'comment',
50 | 'container',
51 | 'cover',
52 | 'date',
53 | 'divider',
54 | 'dotnav',
55 | 'drop',
56 | 'form',
57 | 'heading',
58 | 'icon',
59 | 'label',
60 | 'leader',
61 | 'lightbox',
62 | 'link',
63 | 'list',
64 | 'modal',
65 | 'nav',
66 | 'notification',
67 | 'offcanvas',
68 | 'pagination',
69 | 'sizing',
70 | 'slider',
71 | 'sortable',
72 | 'spinner',
73 | 'stepper',
74 | 'sticky',
75 | 'svg',
76 | 'switcher',
77 | 'tab',
78 | 'table',
79 | 'theme-switcher',
80 | 'thumbnav',
81 | 'tooltip',
82 | 'utility',
83 | 'media',
84 | 'print'
85 | ] as const;
86 |
87 | export type ComponentKey = (typeof components)[number] | string;
88 |
89 | export type Component = { [key: string]: CSSRuleObject };
90 |
91 | export type Components = {
92 | [K in ComponentKey]: Component;
93 | } & { [key: string]: Component };
94 |
95 | export type Context = {
96 | defaults: { ':root': CSSRuleObject; '.dark': CSSRuleObject; [key: string]: CSSRuleObject };
97 | palettes: CSSRuleObject;
98 | components: Components;
99 | };
100 |
101 | export type Extension = (context: Context, config: ExtensionConfig) => Context;
102 |
103 | export type ExtensionConfig = Record;
104 |
105 | export type Extensions = [Function, ExtensionConfig][];
106 |
--------------------------------------------------------------------------------
/src/routes/+layout.js:
--------------------------------------------------------------------------------
1 | export const prerender = true;
2 |
--------------------------------------------------------------------------------
/src/routes/+page.svelte:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/src/routes/+page.svelte
--------------------------------------------------------------------------------
/static/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/favicon.png
--------------------------------------------------------------------------------
/static/fonts/Geist/Mono.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/fonts/Geist/Mono.woff2
--------------------------------------------------------------------------------
/static/fonts/Geist/Sans.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/fonts/Geist/Sans.woff2
--------------------------------------------------------------------------------
/static/fonts/Geist/style.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'Geist Sans';
3 | src: url('/fonts/Geist/Sans.woff2') format('woff2');
4 | font-display: swap;
5 | }
6 | @font-face {
7 | font-family: 'Geist Mono';
8 | src: url('/fonts/Geist/Mono.woff2') format('woff2');
9 | font-display: swap;
10 | }
11 |
--------------------------------------------------------------------------------
/static/images/avatar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/avatar.jpg
--------------------------------------------------------------------------------
/static/images/dark.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/dark.jpg
--------------------------------------------------------------------------------
/static/images/icons.svg:
--------------------------------------------------------------------------------
1 |
25 |
--------------------------------------------------------------------------------
/static/images/image-type.avif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/image-type.avif
--------------------------------------------------------------------------------
/static/images/image-type.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/image-type.jpeg
--------------------------------------------------------------------------------
/static/images/image-type.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/image-type.webp
--------------------------------------------------------------------------------
/static/images/light.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/light.jpg
--------------------------------------------------------------------------------
/static/images/photo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/photo.jpg
--------------------------------------------------------------------------------
/static/images/photo2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/photo2.jpg
--------------------------------------------------------------------------------
/static/images/photo3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/photo3.jpg
--------------------------------------------------------------------------------
/static/images/size-h.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/size-h.jpg
--------------------------------------------------------------------------------
/static/images/size-v.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/size-v.jpg
--------------------------------------------------------------------------------
/static/images/size1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/size1.jpg
--------------------------------------------------------------------------------
/static/images/size2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/size2.jpg
--------------------------------------------------------------------------------
/static/images/slider1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/slider1.jpg
--------------------------------------------------------------------------------
/static/images/slider2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/slider2.jpg
--------------------------------------------------------------------------------
/static/images/slider3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/slider3.jpg
--------------------------------------------------------------------------------
/static/images/slider4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/slider4.jpg
--------------------------------------------------------------------------------
/static/images/slider5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/franken-ui/ui/a93d3fdfbd4a57d85fd14d6f040cb3f4d94be9d7/static/images/slider5.jpg
--------------------------------------------------------------------------------
/svelte.config.js:
--------------------------------------------------------------------------------
1 | import adapter from '@sveltejs/adapter-static';
2 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
3 |
4 | /** @type {import('@sveltejs/kit').Config} */
5 | const config = {
6 | // Consult https://kit.svelte.dev/docs/integrations#preprocessors
7 | // for more information about preprocessors
8 | preprocess: vitePreprocess(),
9 |
10 | kit: {
11 | // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list.
12 | // If your environment is not supported or you settled on a specific environment, switch out the adapter.
13 | // See https://kit.svelte.dev/docs/adapters for more information about adapters.
14 | adapter: adapter(),
15 | alias: {
16 | 'css/*': './src/css/*',
17 | 'franken/*': './src/franken/*',
18 | 'uikit-util': './src/lib/uikit/js/util/index.js'
19 | }
20 | }
21 | };
22 |
23 | export default config;
24 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | import franken from './src/lib/shadcn-ui/preset-quick';
2 |
3 | /** @type {import('tailwindcss').Config} */
4 | export default {
5 | presets: [
6 | franken({
7 | customPalette: {
8 | '.uk-theme-emerald': {
9 | '--background': '160.1 100% 95%',
10 | '--foreground': '160.1 5% 10%',
11 | '--card': '160.1 50% 90%',
12 | '--card-foreground': '160.1 5% 15%',
13 | '--popover': '160.1 100% 95%',
14 | '--popover-foreground': '160.1 100% 10%',
15 | '--primary': '160.1 84.1% 39.4%',
16 | '--primary-foreground': '0 0% 100%',
17 | '--secondary': '160.1 30% 70%',
18 | '--secondary-foreground': '0 0% 0%',
19 | '--muted': '122.1 30% 85%',
20 | '--muted-foreground': '160.1 5% 40%',
21 | '--accent': '122.1 30% 80%',
22 | '--accent-foreground': '160.1 5% 15%',
23 | '--destructive': '0 100% 50%',
24 | '--destructive-foreground': '160.1 5% 90%',
25 | '--border': '160.1 30% 63%',
26 | '--input': '160.1 30% 50%',
27 | '--ring': '160.1 84.1% 39.4%'
28 | },
29 | '.dark.uk-theme-emerald': {
30 | '--background': '160.1 50% 10%',
31 | '--foreground': '160.1 5% 90%',
32 | '--card': '160.1 50% 10%',
33 | '--card-foreground': '160.1 5% 90%',
34 | '--popover': '160.1 50% 5%',
35 | '--popover-foreground': '160.1 5% 90%',
36 | '--primary': '160.1 84.1% 39.4%',
37 | '--primary-foreground': '0 0% 100%',
38 | '--secondary': '160.1 30% 20%',
39 | '--secondary-foreground': '0 0% 100%',
40 | '--muted': '122.1 30% 25%',
41 | '--muted-foreground': '160.1 5% 63%',
42 | '--accent': '122.1 30% 25%',
43 | '--accent-foreground': '160.1 5% 90%',
44 | '--destructive': '0 100% 50%',
45 | '--destructive-foreground': '160.1 5% 90%',
46 | '--border': '160.1 30% 50%',
47 | '--input': '160.1 30% 50%',
48 | '--ring': '160.1 84.1% 39.4%'
49 | }
50 | }
51 | })
52 | ],
53 | content: ['./src/**/*.{html,js,svelte,ts}'],
54 | safelist: [
55 | {
56 | pattern: /^uk-/
57 | }
58 | ],
59 | theme: {
60 | extend: {}
61 | },
62 | plugins: []
63 | };
64 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "./.svelte-kit/tsconfig.json",
3 | "compilerOptions": {
4 | "allowJs": true,
5 | "checkJs": true,
6 | "esModuleInterop": true,
7 | "forceConsistentCasingInFileNames": true,
8 | "resolveJsonModule": true,
9 | "skipLibCheck": true,
10 | "sourceMap": true,
11 | "strict": true,
12 | "module": "NodeNext",
13 | "moduleResolution": "NodeNext"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { sveltekit } from '@sveltejs/kit/vite';
2 | import { defineConfig } from 'vite';
3 | import path from 'path';
4 | import franken from './src/lib/plugin-vite.js';
5 |
6 | export default defineConfig({
7 | plugins: [
8 | sveltekit(),
9 | franken({
10 | preflight: true
11 | })
12 | ],
13 | resolve: {
14 | alias: {
15 | 'uikit-util': path.resolve(__dirname, 'src/lib/uikit/js/util/index.js')
16 | }
17 | }
18 | });
19 |
--------------------------------------------------------------------------------