Skip to content

Version Packages#151

Merged
IzumiSy merged 1 commit intomainfrom
changeset-release/main
Apr 9, 2026
Merged

Version Packages#151
IzumiSy merged 1 commit intomainfrom
changeset-release/main

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions bot commented Apr 3, 2026

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@tailor-platform/app-shell@0.34.0

Minor Changes

  • 0dac517: Add contextual action registration for CommandPalette via useRegisterCommandPaletteActions hook. ActionPanel actions are now automatically registered to the CommandPalette, making them discoverable and triggerable via keyboard shortcut.

    import { useRegisterCommandPaletteActions } from "@tailor-platform/app-shell";
    
    function MyPage() {
      useRegisterCommandPaletteActions("My Page", [
        { key: "save", label: "Save", onSelect: handleSave },
      ]);
    }
  • c6afaca: Add CsvImporter component — a guided, multi-step CSV import flow with drag-and-drop upload, interactive column mapping, Standard Schema validation, inline cell editing, and async server-side validation support.

    Key features:

    • Drag & drop upload with file size limit enforcement
    • Auto column matching via aliases and fuzzy header detection
    • Standard Schema validation with built-in csv.string(), csv.number(), csv.boolean(), csv.date(), and csv.enum() validators that handle coercion and validation in one step
    • Inline error correction — users can fix validation errors directly in the review table before importing
    • Async onValidate callback for server-side checks (e.g. uniqueness constraints)
    • Built-in i18n support — English and Japanese labels included out of the box
    import {
      CsvImporter,
      useCsvImporter,
      csv,
      type CsvCellIssue,
    } from "@tailor-platform/app-shell";
    
    const { open, props } = useCsvImporter({
      schema: {
        // Each column defines a mapping target for CSV headers
        columns: [
          {
            // Becomes the object key in parsed row data
            key: "name",
            // Display label shown in the mapping UI
            label: "Name",
            // Must be mapped to a CSV header before proceeding
            required: true,
            // Alternative CSV header names for auto-matching
            aliases: ["product_name"],
            // Standard Schema validator — coerces and validates in one step
            schema: csv.string({ min: 1 }),
          },
          {
            key: "price",
            label: "Price",
            schema: csv.number({ min: 0 }), // Coerces the raw CSV string to a number and rejects NaN
          },
          {
            key: "active",
            label: "Active",
            schema: csv.boolean(), // Recognises "true"/"1"/"yes" and "false"/"0"/"no" (case-insensitive)
          },
        ],
      },
    
      // Async callback invoked after schema validation passes.
      // Use it for server-side checks such as uniqueness or foreign-key lookups.
      onValidate: async (rows) => {
        // Async API request that returns CsvCellIssue[] — shown inline in the review table
        return await validateOnServer(rows);
      },
    
      // Called when the user confirms the import after resolving all errors.
      // `event` contains the final rows, mappings, corrections, and summary stats.
      onImport: async (event) => {
        // buildRows() returns typed rows inferred from the schema definition.
        // e.g. { name: string; price: number; active: boolean }[]
        const rows = await event.buildRows();
        await saveToBackend(rows);
      },
    });
    
    // open() opens the import drawer
    <Button onClick={open}>Import CSV</Button>
    
    // Renders a multi-step flow CSV importer component in drawer
    <CsvImporter {...props} />

Patch Changes

  • 6a39f50: Updated react-router (^7.13.1 -> ^7.14.0)

  • dc4b24b: Updated lucide-react (^0.577.0 -> ^1.7.0)

  • 3dd41da: Improve authentication initialization

    • Avoids React strict mode double-invocation issues by running auth side effects outside of React's lifecycle
    • OAuth redirections are now handled before component rendering, eliminating unnecessary UI renders during the callback flow
  • Updated dependencies [01984ee]

    • @tailor-platform/app-shell-vite-plugin@0.2.1

@tailor-platform/app-shell-vite-plugin@0.2.1

Patch Changes

  • 01984ee: Update README to document the entrypoint option, [...slug] catch-all path conversion, and the current AppShell.WithPages implementation.

@github-actions github-actions bot force-pushed the changeset-release/main branch 16 times, most recently from ab585b4 to 059600e Compare April 9, 2026 01:04
@github-actions github-actions bot force-pushed the changeset-release/main branch from 059600e to 277da0d Compare April 9, 2026 01:32
@IzumiSy IzumiSy merged commit 588bc8f into main Apr 9, 2026
@IzumiSy IzumiSy deleted the changeset-release/main branch April 9, 2026 01:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant